mirror of
https://github.com/Klipper3d/klipper.git
synced 2025-08-06 21:44:13 -06:00
gcode: Remove "action_" commands from get_status() calls
Rename printer.gcode.action_emergency_stop() to action_emergency_stop(), printer.gcode.action_respond_info() to action_respond_info(), and printer.gcode.action_respond_error() to action_raise_error() in command templates. This simplifies the get_status() interface, as returning callable functions from that interface was confusing. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
2caaaea9a4
commit
b2c78d71b0
10 changed files with 67 additions and 61 deletions
|
@ -66,9 +66,8 @@ class DisplayGroup:
|
|||
template = gcode_macro.load_template(c, 'text')
|
||||
self.data_items.append((row, col, template))
|
||||
def show(self, display, templates, eventtime):
|
||||
swrap = self.data_items[0][2].create_status_wrapper(eventtime)
|
||||
context = { 'printer': swrap,
|
||||
'draw_progress_bar': display.draw_progress_bar }
|
||||
context = self.data_items[0][2].create_template_context(eventtime)
|
||||
context['draw_progress_bar'] = display.draw_progress_bar
|
||||
def render(name, **kwargs):
|
||||
return templates[name].render(context, **kwargs)
|
||||
context['render'] = render
|
||||
|
|
|
@ -137,21 +137,21 @@ type: command
|
|||
enable: {printer.idle_timeout.state == "Printing"}
|
||||
name: Pause printing
|
||||
gcode:
|
||||
{printer.gcode.action_respond_info('action:pause')}
|
||||
{action_respond_info('action:pause')}
|
||||
|
||||
[menu __main __octoprint __resume]
|
||||
type: command
|
||||
enable: {not printer.idle_timeout.state == "Printing"}
|
||||
name: Resume printing
|
||||
gcode:
|
||||
{printer.gcode.action_respond_info('action:resume')}
|
||||
{action_respond_info('action:resume')}
|
||||
|
||||
[menu __main __octoprint __abort]
|
||||
type: command
|
||||
enable: {printer.idle_timeout.state == "Printing"}
|
||||
name: Abort printing
|
||||
gcode:
|
||||
{printer.gcode.action_respond_info('action:cancel')}
|
||||
{action_respond_info('action:cancel')}
|
||||
|
||||
### menu virtual sdcard ###
|
||||
[menu __main __sdcard]
|
||||
|
@ -720,8 +720,9 @@ name: Dump parameters
|
|||
gcode:
|
||||
{% for name1 in printer %}
|
||||
{% for name2 in printer[name1] %}
|
||||
{ printer.gcode.action_respond_info("printer['%s'].%s = %s" % (name1, name2, printer[name1][name2])) }
|
||||
{ action_respond_info("printer['%s'].%s = %s"
|
||||
% (name1, name2, printer[name1][name2])) }
|
||||
{% else %}
|
||||
{ printer.gcode.action_respond_info("printer['%s'] = %s" % (name1, printer[name1])) }
|
||||
{ action_respond_info("printer['%s'] = %s" % (name1, printer[name1])) }
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
import os, logging
|
||||
from string import Template
|
||||
from . import menu_keys
|
||||
from .. import gcode_macro
|
||||
|
||||
|
||||
class sentinel:
|
||||
|
@ -722,13 +721,11 @@ class MenuManager:
|
|||
|
||||
def update_context(self, eventtime):
|
||||
# menu default jinja2 context
|
||||
self.context = {
|
||||
'printer': gcode_macro.GetStatusWrapper(self.printer, eventtime),
|
||||
'menu': {
|
||||
'eventtime': eventtime,
|
||||
'back': self._action_back,
|
||||
'exit': self._action_exit
|
||||
}
|
||||
self.context = self.gcode_macro.create_template_context(eventtime)
|
||||
self.context['menu'] = {
|
||||
'eventtime': eventtime,
|
||||
'back': self._action_back,
|
||||
'exit': self._action_exit
|
||||
}
|
||||
|
||||
def stack_push(self, container):
|
||||
|
|
|
@ -45,6 +45,8 @@ class TemplateWrapper:
|
|||
self.printer = printer
|
||||
self.name = name
|
||||
self.gcode = self.printer.lookup_object('gcode')
|
||||
gcode_macro = self.printer.lookup_object('gcode_macro')
|
||||
self.create_template_context = gcode_macro.create_template_context
|
||||
try:
|
||||
self.template = env.from_string(script)
|
||||
except Exception as e:
|
||||
|
@ -52,11 +54,9 @@ class TemplateWrapper:
|
|||
name, traceback.format_exception_only(type(e), e)[-1])
|
||||
logging.exception(msg)
|
||||
raise printer.config_error(msg)
|
||||
def create_status_wrapper(self, eventtime=None):
|
||||
return GetStatusWrapper(self.printer, eventtime)
|
||||
def render(self, context=None):
|
||||
if context is None:
|
||||
context = {'printer': self.create_status_wrapper()}
|
||||
context = self.create_template_context()
|
||||
try:
|
||||
return str(self.template.render(context))
|
||||
except Exception as e:
|
||||
|
@ -79,6 +79,21 @@ class PrinterGCodeMacro:
|
|||
else:
|
||||
script = config.get(option, default)
|
||||
return TemplateWrapper(self.printer, self.env, name, script)
|
||||
def _action_emergency_stop(self, msg="action_emergency_stop"):
|
||||
self.printer.invoke_shutdown("Shutdown due to %s" % (msg,))
|
||||
return ""
|
||||
def _action_respond_info(self, msg):
|
||||
self.printer.lookup_object('gcode').respond_info(msg)
|
||||
return ""
|
||||
def _action_raise_error(self, msg):
|
||||
raise self.printer.command_error(msg)
|
||||
def create_template_context(self, eventtime=None):
|
||||
return {
|
||||
'printer': GetStatusWrapper(self.printer, eventtime),
|
||||
'action_emergency_stop': self._action_emergency_stop,
|
||||
'action_respond_info': self._action_respond_info,
|
||||
'action_raise_error': self._action_raise_error,
|
||||
}
|
||||
|
||||
def load_config(config):
|
||||
return PrinterGCodeMacro(config)
|
||||
|
@ -159,7 +174,7 @@ class GCodeMacro:
|
|||
kwparams = dict(self.kwparams)
|
||||
kwparams.update(params)
|
||||
kwparams.update(self.variables)
|
||||
kwparams['printer'] = self.template.create_status_wrapper()
|
||||
kwparams.update(self.template.create_template_context())
|
||||
kwparams['params'] = params
|
||||
self.in_script = True
|
||||
try:
|
||||
|
|
|
@ -52,11 +52,11 @@ class HomingOverride:
|
|||
homing_axes.append(axis)
|
||||
toolhead.set_position(pos, homing_axes=homing_axes)
|
||||
# Perform homing
|
||||
kwparams = { 'printer': self.template.create_status_wrapper() }
|
||||
kwparams['params'] = gcmd.get_command_parameters()
|
||||
context = self.template.create_template_context()
|
||||
context['params'] = gcmd.get_command_parameters()
|
||||
try:
|
||||
self.in_script = True
|
||||
self.template.run_gcode_from_command(kwparams)
|
||||
self.template.run_gcode_from_command(context)
|
||||
finally:
|
||||
self.in_script = False
|
||||
|
||||
|
|
|
@ -167,15 +167,6 @@ class GCodeParser:
|
|||
self.move_with_transform = transform.move
|
||||
self.position_with_transform = transform.get_position
|
||||
return old_transform
|
||||
def _action_emergency_stop(self, msg="action_emergency_stop"):
|
||||
self.printer.invoke_shutdown("Shutdown due to %s" % (msg,))
|
||||
return ""
|
||||
def _action_respond_info(self, msg):
|
||||
self.respond_info(msg)
|
||||
return ""
|
||||
def _action_respond_error(self, msg):
|
||||
self._respond_error(msg)
|
||||
return ""
|
||||
def _get_gcode_position(self):
|
||||
p = [lp - bp for lp, bp in zip(self.last_position, self.base_position)]
|
||||
p[3] /= self.extrude_factor
|
||||
|
@ -208,9 +199,6 @@ class GCodeParser:
|
|||
'homing_ypos': self.homing_position[1],
|
||||
'homing_zpos': self.homing_position[2],
|
||||
'gcode_position': homing.Coord(*move_position),
|
||||
'action_respond_info': self._action_respond_info,
|
||||
'action_respond_error': self._action_respond_error,
|
||||
'action_emergency_stop': self._action_emergency_stop,
|
||||
}
|
||||
def dump_state(self):
|
||||
return ("gcode state: absolute_coord=%s absolute_extrude=%s"
|
||||
|
|
|
@ -393,7 +393,7 @@ class QueryStatusHelper:
|
|||
cres = {}
|
||||
for ri in req_items:
|
||||
rd = res.get(ri, None)
|
||||
if not callable(rd) and (is_query or rd != lres.get(ri)):
|
||||
if is_query or rd != lres.get(ri):
|
||||
cres[ri] = rd
|
||||
if cres or is_query:
|
||||
cquery[obj_name] = cres
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue