Merge branch 'configfile'

This commit is contained in:
Jordan Ruthe
2020-11-16 23:57:08 -05:00
5 changed files with 279 additions and 41 deletions

View File

@@ -22,6 +22,8 @@ from files import KlippyFiles
from KlippyGtk import KlippyGtk
from printer import Printer
from ks_includes.config import KlipperScreenConfig
# Do this better in the future
from panels.screen_panel import *
from panels.bed_level import *
@@ -76,7 +78,7 @@ class KlipperScreen(Gtk.Window):
printer = None
def __init__(self):
self.read_config()
self._config = KlipperScreenConfig()
self.init_style()
self.printer = Printer({
'configfile': {
@@ -240,19 +242,6 @@ class KlipperScreen(Gtk.Window):
def error_modal_response(self, widget, response_id):
widget.destroy()
def read_config (self):
try:
with open(config) as config_file:
self._config = json.load(config_file)
lines = [
"===== Config File =====",
json.dumps(self._config, indent=2),
"=======================",
]
logger.info("\n".join(lines))
except:
logger.exception("Error reading configuration file")
def init_style(self):
style_provider = Gtk.CssProvider()
@@ -271,15 +260,19 @@ class KlipperScreen(Gtk.Window):
# Find current menu item
panels = list(self._cur_panels)
if "job_status" not in self._cur_panels:
cur_item = self._find_current_menu_item(name, self._config['mainmenu'], panels.pop(0))
menu = cur_item['items']
menu = "__main"
else:
menu = self._config['printmenu']
menu = "__print"
logger.info("#### Menu " + str(menu))
#self.show_panel("_".join(self._cur_panels) + '_' + name, "menu", 1, False, menu=menu)
self.show_panel(self._cur_panels[-1] + '_' + name, "menu", 1, False, items=menu)
menuitems = self._config.get_menu_items(menu, name)
if len(menuitems) == 0:
logger.info("No items in menu, returning.")
return
self.show_panel(self._cur_panels[-1] + '_' + name, "menu", 1, False, items=menuitems)
return
grid = self.arrangeMenuItems(menu, 4)
@@ -293,14 +286,6 @@ class KlipperScreen(Gtk.Window):
self.add(self.panels[cur_item['name']])
self.show_all()
def _find_current_menu_item(self, menu, items, names):
for item in items:
if item['name'] == menu:
return item
#TODO: Add error check
def _remove_all_panels(self):
while len(self._cur_panels) > 0:
self._remove_current_panel()
@@ -442,7 +427,7 @@ class KlipperScreen(Gtk.Window):
return
self.files.add_timeout()
self.show_panel('main_panel', "MainPanel", 2, items=self._config['mainmenu'], extrudercount=self.printer.get_extruder_count())
self.show_panel('main_panel', "MainPanel", 2, items=self._config.get_menu_items("__main"), extrudercount=self.printer.get_extruder_count())
def printer_printing(self):
self.ws_subscribe()