make the language list a menu instead of a dropdown fixes #915
This commit is contained in:
parent
4db7fd288c
commit
be13c1086e
@ -220,7 +220,7 @@ class KlipperScreenConfig:
|
||||
|
||||
self.configurable_options = [
|
||||
{"language": {
|
||||
"section": "main", "name": _("Language"), "type": "dropdown", "value": "system_lang",
|
||||
"section": "main", "name": _("Language"), "type": None, "value": "system_lang",
|
||||
"callback": screen.change_language, "options": [
|
||||
{"name": _("System") + " " + _("(default)"), "value": "system_lang"}]}},
|
||||
{"theme": {
|
||||
@ -279,10 +279,6 @@ class KlipperScreenConfig:
|
||||
|
||||
self.configurable_options.extend(panel_options)
|
||||
|
||||
lang_opt = self.configurable_options[0]['language']['options']
|
||||
for lang in self.lang_list:
|
||||
lang_opt.append({"name": lang, "value": lang})
|
||||
|
||||
t_path = os.path.join(klipperscreendir, 'styles')
|
||||
themes = [d for d in os.listdir(t_path) if (not os.path.isfile(os.path.join(t_path, d)) and d != "z-bolt")]
|
||||
themes.sort()
|
||||
|
@ -64,7 +64,9 @@ class ScreenPanel:
|
||||
self._screen.show_panel(panel, item['panel'], item['name'], 1, False)
|
||||
|
||||
def load_menu(self, widget, name, title=None):
|
||||
logging.info(f"loading menu {name}")
|
||||
if f"{name}_menu" not in self.labels:
|
||||
logging.error(f"{name} not in labels")
|
||||
return
|
||||
|
||||
for child in self.content.get_children():
|
||||
|
@ -13,7 +13,7 @@ def create_panel(*args):
|
||||
class SettingsPanel(ScreenPanel):
|
||||
def __init__(self, screen, title):
|
||||
super().__init__(screen, title)
|
||||
self.printers = self.settings = {}
|
||||
self.printers = self.settings = self.langs = {}
|
||||
self.menu = ['settings_menu']
|
||||
options = self._config.get_configurable_options().copy()
|
||||
options.append({"printers": {
|
||||
@ -21,6 +21,11 @@ class SettingsPanel(ScreenPanel):
|
||||
"type": "menu",
|
||||
"menu": "printers"
|
||||
}})
|
||||
options.append({"lang": {
|
||||
"name": _("Language"),
|
||||
"type": "menu",
|
||||
"menu": "lang"
|
||||
}})
|
||||
|
||||
self.labels['settings_menu'] = self._gtk.ScrolledWindow()
|
||||
self.labels['settings'] = Gtk.Grid()
|
||||
@ -29,6 +34,16 @@ class SettingsPanel(ScreenPanel):
|
||||
name = list(option)[0]
|
||||
self.add_option('settings', self.settings, name, option[name])
|
||||
|
||||
self.labels['lang_menu'] = self._gtk.ScrolledWindow()
|
||||
self.labels['lang'] = Gtk.Grid()
|
||||
self.labels['lang_menu'].add(self.labels['lang'])
|
||||
for lang in self._config.lang_list:
|
||||
self.langs[lang] = {
|
||||
"name": lang,
|
||||
"type": "lang",
|
||||
}
|
||||
self.add_option("lang", self.langs, lang, self.langs[lang])
|
||||
|
||||
self.labels['printers_menu'] = self._gtk.ScrolledWindow()
|
||||
self.labels['printers'] = Gtk.Grid()
|
||||
self.labels['printers_menu'].add(self.labels['printers'])
|
||||
@ -114,6 +129,12 @@ class SettingsPanel(ScreenPanel):
|
||||
open_menu.set_hexpand(False)
|
||||
open_menu.set_halign(Gtk.Align.END)
|
||||
dev.add(open_menu)
|
||||
elif option['type'] == "lang":
|
||||
select = self._gtk.Button("load", style="color3")
|
||||
select.connect("clicked", self._screen.change_language, option['name'])
|
||||
select.set_hexpand(False)
|
||||
select.set_halign(Gtk.Align.END)
|
||||
dev.add(select)
|
||||
|
||||
opt_array[opt_name] = {
|
||||
"name": option['name'],
|
||||
|
@ -681,7 +681,7 @@ class KlipperScreen(Gtk.Window):
|
||||
def toggle_macro_shortcut(self, value):
|
||||
self.base_panel.show_macro_shortcut(value)
|
||||
|
||||
def change_language(self, lang):
|
||||
def change_language(self, widget, lang):
|
||||
self._config.install_language(lang)
|
||||
self.lang_ltr = set_text_direction(lang)
|
||||
self._config._create_configurable_options(self)
|
||||
|
Loading…
x
Reference in New Issue
Block a user