make the language list a menu instead of a dropdown fixes #915

This commit is contained in:
alfrix 2023-05-20 05:00:45 -06:00
parent 4db7fd288c
commit be13c1086e
4 changed files with 26 additions and 7 deletions

View File

@ -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()

View File

@ -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():

View File

@ -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'],

View File

@ -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)