Start in configurations without fans or extruders or temp devices

A bunch of conditionals that makes KS start and not stay in the splash screen
This commit is contained in:
Alfredo Monclus 2022-01-30 10:55:05 -03:00 committed by GitHub
parent dad267d278
commit c1372c1839
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 40 additions and 16 deletions

View File

@ -30,6 +30,7 @@ icon: home
name: {{ gettext('Temperature') }} name: {{ gettext('Temperature') }}
icon: heat-up icon: heat-up
panel: temperature panel: temperature
enable: {{ printer.temperature_devices.count > 0 }}
[menu __main actions] [menu __main actions]
name: {{ gettext('Actions') }} name: {{ gettext('Actions') }}
@ -98,11 +99,13 @@ panel: move
name: {{ gettext('Extrude') }} name: {{ gettext('Extrude') }}
icon: filament icon: filament
panel: extrude panel: extrude
enable: {{ printer.extruders.count > 0 }}
[menu __main actions fan] [menu __main actions fan]
name: {{ gettext('Fan') }} name: {{ gettext('Fan') }}
icon: fan icon: fan
panel: fan panel: fan
enable: {{ printer.fans.count > 0 }}
[menu __main actions macros] [menu __main actions macros]
name: {{ gettext('Macros') }} name: {{ gettext('Macros') }}
@ -180,17 +183,19 @@ name: {{ gettext('Print Control') }}
name: {{ gettext('Temperature') }} name: {{ gettext('Temperature') }}
icon: heat-up icon: heat-up
panel: temperature panel: temperature
enable: {{ printer.temperature_devices.count > 0 }}
[menu __print fan] [menu __print fan]
name: {{ gettext('Fan') }} name: {{ gettext('Fan') }}
icon: fan icon: fan
panel: fan panel: fan
enable: {{ printer.fans.count > 0 }}
[menu __print extrude] [menu __print extrude]
name: {{ gettext('Extrude') }} name: {{ gettext('Extrude') }}
icon: filament icon: filament
panel: extrude panel: extrude
enable: {{ printer.pause_resume.is_paused == True }} enable: {{ (printer.pause_resume.is_paused == True) and (printer.extruders.count > 0) }}
[menu __print power] [menu __print power]
name: {{ gettext('Power') }} name: {{ gettext('Power') }}

View File

@ -32,6 +32,8 @@ class Printer:
self.config = data['configfile']['config'] self.config = data['configfile']['config']
self.toolcount = 0 self.toolcount = 0
self.extrudercount = 0 self.extrudercount = 0
self.tempdevcount = 0
self.fancount = 0
self.tools = [] self.tools = []
self.devices = {} self.devices = {}
self.data = data self.data = data
@ -65,6 +67,10 @@ class Printer:
"temperature": 0, "temperature": 0,
"target": 0 "target": 0
} }
self.tempdevcount += 1
if x == 'fan' or x.startswith('controller_fan ') or x.startswith('heater_fan ') \
or x.startswith('fan_generic '):
self.fancount += 1
if x.startswith('bed_mesh '): if x.startswith('bed_mesh '):
r = self.config[x] r = self.config[x]
r['x_count'] = int(r['x_count']) r['x_count'] = int(r['x_count'])
@ -77,7 +83,10 @@ class Printer:
self.process_update(data) self.process_update(data)
logging.info("Klipper version: %s", self.klipper['version']) logging.info("Klipper version: %s", self.klipper['version'])
logging.info("### Toolcount: " + str(self.toolcount) + " Heaters: " + str(self.extrudercount)) logging.info("# Toolcount: %s", str(self.toolcount))
logging.info("# Extruders: %s", str(self.extrudercount))
logging.info("# Temperature devices: %s", str(self.tempdevcount))
logging.info("# Fans: %s", str(self.fancount))
def process_update(self, data): def process_update(self, data):
keys = [ keys = [
@ -214,6 +223,15 @@ class Printer:
def get_printer_status_data(self): def get_printer_status_data(self):
data = { data = {
"printer": { "printer": {
"extruders": {
"count": self.extrudercount
},
"temperature_devices": {
"count": self.tempdevcount
},
"fans": {
"count": self.fancount
},
"bltouch": self.section_exists("bltouch"), "bltouch": self.section_exists("bltouch"),
"gcode_macros": { "gcode_macros": {
"count": len(self.get_gcode_macros()) "count": len(self.get_gcode_macros())

View File

@ -123,23 +123,20 @@ class BasePanel(ScreenPanel):
if show is False: if show is False:
return return
i = 0 if self._printer.get_tools():
for extruder in self._printer.get_tools(): for i, extruder in enumerate(self._printer.get_tools()):
self.labels[extruder + '_box'] = Gtk.Box(spacing=0) self.labels[extruder + '_box'] = Gtk.Box(spacing=0)
self.labels[extruder] = Gtk.Label(label="") self.labels[extruder] = Gtk.Label(label="")
# self.labels[extruder].get_style_context().add_class("printing-info") if i <= 4:
if i <= 4: ext_img = self._gtk.Image("extruder-%s.svg" % i, None, .4, .4)
ext_img = self._gtk.Image("extruder-%s.svg" % i, None, .4, .4) self.labels[extruder + '_box'].pack_start(ext_img, True, 3, 3)
self.labels[extruder + '_box'].pack_start(ext_img, True, 3, 3) self.labels[extruder + '_box'].pack_start(self.labels[extruder], True, 3, 3)
self.labels[extruder + '_box'].pack_start(self.labels[extruder], True, 3, 3) self.current_extruder = self._printer.get_stat("toolhead", "extruder")
i += 1 self.control['temp_box'].pack_start(self.labels["%s_box" % self.current_extruder], True, 5, 5)
self.current_extruder = self._printer.get_stat("toolhead", "extruder")
self.control['temp_box'].pack_start(self.labels["%s_box" % self.current_extruder], True, 5, 5)
if self._printer.has_heated_bed(): if self._printer.has_heated_bed():
heater_bed = self._gtk.Image("bed.svg", None, .4, .4) heater_bed = self._gtk.Image("bed.svg", None, .4, .4)
self.labels['heater_bed'] = Gtk.Label(label="20 C") self.labels['heater_bed'] = Gtk.Label(label="20 C")
# self.labels['heater_bed'].get_style_context().add_class("printing-info")
heater_bed_box = Gtk.Box(spacing=0) heater_bed_box = Gtk.Box(spacing=0)
heater_bed_box.pack_start(heater_bed, True, 5, 5) heater_bed_box.pack_start(heater_bed, True, 5, 5)
heater_bed_box.pack_start(self.labels['heater_bed'], True, 3, 3) heater_bed_box.pack_start(self.labels['heater_bed'], True, 3, 3)

View File

@ -13,6 +13,7 @@ def create_panel(*args):
class MenuPanel(ScreenPanel): class MenuPanel(ScreenPanel):
i = 0 i = 0
j2_data = None
def initialize(self, panel_name, display_name, items): def initialize(self, panel_name, display_name, items):
_ = self.lang.gettext _ = self.lang.gettext
@ -25,7 +26,8 @@ class MenuPanel(ScreenPanel):
self.content.add(self.grid) self.content.add(self.grid)
def activate(self): def activate(self):
self.j2_data = self._printer.get_printer_status_data() if not self.j2_data:
self.j2_data = self._printer.get_printer_status_data()
self.j2_data.update({ self.j2_data.update({
'moonraker_connected': self._screen._ws.is_connected() 'moonraker_connected': self._screen._ws.is_connected()
}) })
@ -94,6 +96,8 @@ class MenuPanel(ScreenPanel):
if enable is False: if enable is False:
return False return False
if not self.j2_data:
self.j2_data = self._printer.get_printer_status_data()
try: try:
logging.debug("Template: '%s'" % enable) logging.debug("Template: '%s'" % enable)
logging.debug("Data: %s" % self.j2_data) logging.debug("Data: %s" % self.j2_data)