use only one jinja env

slightly improves performance
This commit is contained in:
alfrix 2023-06-15 10:18:06 -03:00
parent dbe3f03019
commit 2241b54153
2 changed files with 10 additions and 12 deletions

View File

@ -6,7 +6,7 @@ import json
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
from jinja2 import Environment, Template
from jinja2 import Template
from ks_includes.screen_panel import ScreenPanel
@ -75,26 +75,23 @@ class MenuPanel(ScreenPanel):
key = list(self.items[i])[0]
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()
name = env.from_string(item['name']).render(printer)
icon = 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
name = self._screen.env.from_string(item['name']).render(printer)
icon = self._screen.env.from_string(item['icon']).render(printer) if item['icon'] 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}")
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)
elif item['method'] is not None:
params = {}
if item['params'] is not False:
try:
p = env.from_string(item['params']).render(printer)
p = self._screen.env.from_string(item['params']).render(printer)
params = json.loads(p)
except Exception as e:
logging.exception(f"Unable to parse parameters for [{name}]:\n{e}")

View File

@ -109,6 +109,8 @@ class KlipperScreen(Gtk.Window):
self._config = KlipperScreenConfig(configfile, self)
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("configure_event", self.update_size)
@ -681,6 +683,7 @@ class KlipperScreen(Gtk.Window):
def change_language(self, widget, lang):
self._config.install_language(lang)
self.lang_ltr = set_text_direction(lang)
self.env.install_gettext_translations(self._config.get_lang())
self._config._create_configurable_options(self)
self.reload_panels()
@ -750,9 +753,7 @@ class KlipperScreen(Gtk.Window):
]
try:
env = Environment(extensions=["jinja2.ext.i18n"], autoescape=True)
env.install_gettext_translations(self._config.get_lang())
j2_temp = env.from_string(text)
j2_temp = self.env.from_string(text)
text = j2_temp.render()
except Exception as e:
logging.debug(f"Error parsing jinja for confirm_send_action\n{e}")