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}")