use only one jinja env
slightly improves performance
This commit is contained in:
parent
dbe3f03019
commit
2241b54153
@ -6,7 +6,7 @@ import json
|
|||||||
|
|
||||||
gi.require_version("Gtk", "3.0")
|
gi.require_version("Gtk", "3.0")
|
||||||
from gi.repository import Gtk
|
from gi.repository import Gtk
|
||||||
from jinja2 import Environment, Template
|
from jinja2 import Template
|
||||||
|
|
||||||
from ks_includes.screen_panel import ScreenPanel
|
from ks_includes.screen_panel import ScreenPanel
|
||||||
|
|
||||||
@ -75,26 +75,23 @@ class MenuPanel(ScreenPanel):
|
|||||||
key = list(self.items[i])[0]
|
key = list(self.items[i])[0]
|
||||||
item = self.items[i][key]
|
item = self.items[i][key]
|
||||||
|
|
||||||
env = Environment(extensions=["jinja2.ext.i18n"], autoescape=True)
|
|
||||||
env.install_gettext_translations(self._config.get_lang())
|
|
||||||
|
|
||||||
printer = self._printer.get_printer_status_data()
|
printer = self._printer.get_printer_status_data()
|
||||||
|
|
||||||
name = env.from_string(item['name']).render(printer)
|
name = self._screen.env.from_string(item['name']).render(printer)
|
||||||
icon = env.from_string(item['icon']).render(printer) if item['icon'] else None
|
icon = self._screen.env.from_string(item['icon']).render(printer) if item['icon'] else None
|
||||||
style = env.from_string(item['style']).render(printer) if item['style'] else None
|
style = self._screen.env.from_string(item['style']).render(printer) if item['style'] else None
|
||||||
|
|
||||||
b = self._gtk.Button(icon, name, style or f"color{i % 4 + 1}")
|
b = self._gtk.Button(icon, name, style or f"color{i % 4 + 1}")
|
||||||
|
|
||||||
if item['panel'] is not None:
|
if item['panel'] is not None:
|
||||||
panel = env.from_string(item['panel']).render(printer)
|
panel = self._screen.env.from_string(item['panel']).render(printer)
|
||||||
b.connect("clicked", self.menu_item_clicked, panel, item)
|
b.connect("clicked", self.menu_item_clicked, panel, item)
|
||||||
elif item['method'] is not None:
|
elif item['method'] is not None:
|
||||||
params = {}
|
params = {}
|
||||||
|
|
||||||
if item['params'] is not False:
|
if item['params'] is not False:
|
||||||
try:
|
try:
|
||||||
p = env.from_string(item['params']).render(printer)
|
p = self._screen.env.from_string(item['params']).render(printer)
|
||||||
params = json.loads(p)
|
params = json.loads(p)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.exception(f"Unable to parse parameters for [{name}]:\n{e}")
|
logging.exception(f"Unable to parse parameters for [{name}]:\n{e}")
|
||||||
|
@ -109,6 +109,8 @@ class KlipperScreen(Gtk.Window):
|
|||||||
|
|
||||||
self._config = KlipperScreenConfig(configfile, self)
|
self._config = KlipperScreenConfig(configfile, self)
|
||||||
self.lang_ltr = set_text_direction(self._config.get_main_config().get("language", None))
|
self.lang_ltr = set_text_direction(self._config.get_main_config().get("language", None))
|
||||||
|
self.env = Environment(extensions=["jinja2.ext.i18n"], autoescape=True)
|
||||||
|
self.env.install_gettext_translations(self._config.get_lang())
|
||||||
|
|
||||||
self.connect("key-press-event", self._key_press_event)
|
self.connect("key-press-event", self._key_press_event)
|
||||||
self.connect("configure_event", self.update_size)
|
self.connect("configure_event", self.update_size)
|
||||||
@ -681,6 +683,7 @@ class KlipperScreen(Gtk.Window):
|
|||||||
def change_language(self, widget, lang):
|
def change_language(self, widget, lang):
|
||||||
self._config.install_language(lang)
|
self._config.install_language(lang)
|
||||||
self.lang_ltr = set_text_direction(lang)
|
self.lang_ltr = set_text_direction(lang)
|
||||||
|
self.env.install_gettext_translations(self._config.get_lang())
|
||||||
self._config._create_configurable_options(self)
|
self._config._create_configurable_options(self)
|
||||||
self.reload_panels()
|
self.reload_panels()
|
||||||
|
|
||||||
@ -750,9 +753,7 @@ class KlipperScreen(Gtk.Window):
|
|||||||
]
|
]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
env = Environment(extensions=["jinja2.ext.i18n"], autoescape=True)
|
j2_temp = self.env.from_string(text)
|
||||||
env.install_gettext_translations(self._config.get_lang())
|
|
||||||
j2_temp = env.from_string(text)
|
|
||||||
text = j2_temp.render()
|
text = j2_temp.render()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.debug(f"Error parsing jinja for confirm_send_action\n{e}")
|
logging.debug(f"Error parsing jinja for confirm_send_action\n{e}")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user