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 = [
|
self.configurable_options = [
|
||||||
{"language": {
|
{"language": {
|
||||||
"section": "main", "name": _("Language"), "type": "dropdown", "value": "system_lang",
|
"section": "main", "name": _("Language"), "type": None, "value": "system_lang",
|
||||||
"callback": screen.change_language, "options": [
|
"callback": screen.change_language, "options": [
|
||||||
{"name": _("System") + " " + _("(default)"), "value": "system_lang"}]}},
|
{"name": _("System") + " " + _("(default)"), "value": "system_lang"}]}},
|
||||||
{"theme": {
|
{"theme": {
|
||||||
@ -279,10 +279,6 @@ class KlipperScreenConfig:
|
|||||||
|
|
||||||
self.configurable_options.extend(panel_options)
|
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')
|
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 = [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()
|
themes.sort()
|
||||||
|
@ -64,7 +64,9 @@ class ScreenPanel:
|
|||||||
self._screen.show_panel(panel, item['panel'], item['name'], 1, False)
|
self._screen.show_panel(panel, item['panel'], item['name'], 1, False)
|
||||||
|
|
||||||
def load_menu(self, widget, name, title=None):
|
def load_menu(self, widget, name, title=None):
|
||||||
|
logging.info(f"loading menu {name}")
|
||||||
if f"{name}_menu" not in self.labels:
|
if f"{name}_menu" not in self.labels:
|
||||||
|
logging.error(f"{name} not in labels")
|
||||||
return
|
return
|
||||||
|
|
||||||
for child in self.content.get_children():
|
for child in self.content.get_children():
|
||||||
|
@ -13,7 +13,7 @@ def create_panel(*args):
|
|||||||
class SettingsPanel(ScreenPanel):
|
class SettingsPanel(ScreenPanel):
|
||||||
def __init__(self, screen, title):
|
def __init__(self, screen, title):
|
||||||
super().__init__(screen, title)
|
super().__init__(screen, title)
|
||||||
self.printers = self.settings = {}
|
self.printers = self.settings = self.langs = {}
|
||||||
self.menu = ['settings_menu']
|
self.menu = ['settings_menu']
|
||||||
options = self._config.get_configurable_options().copy()
|
options = self._config.get_configurable_options().copy()
|
||||||
options.append({"printers": {
|
options.append({"printers": {
|
||||||
@ -21,6 +21,11 @@ class SettingsPanel(ScreenPanel):
|
|||||||
"type": "menu",
|
"type": "menu",
|
||||||
"menu": "printers"
|
"menu": "printers"
|
||||||
}})
|
}})
|
||||||
|
options.append({"lang": {
|
||||||
|
"name": _("Language"),
|
||||||
|
"type": "menu",
|
||||||
|
"menu": "lang"
|
||||||
|
}})
|
||||||
|
|
||||||
self.labels['settings_menu'] = self._gtk.ScrolledWindow()
|
self.labels['settings_menu'] = self._gtk.ScrolledWindow()
|
||||||
self.labels['settings'] = Gtk.Grid()
|
self.labels['settings'] = Gtk.Grid()
|
||||||
@ -29,6 +34,16 @@ class SettingsPanel(ScreenPanel):
|
|||||||
name = list(option)[0]
|
name = list(option)[0]
|
||||||
self.add_option('settings', self.settings, name, option[name])
|
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_menu'] = self._gtk.ScrolledWindow()
|
||||||
self.labels['printers'] = Gtk.Grid()
|
self.labels['printers'] = Gtk.Grid()
|
||||||
self.labels['printers_menu'].add(self.labels['printers'])
|
self.labels['printers_menu'].add(self.labels['printers'])
|
||||||
@ -114,6 +129,12 @@ class SettingsPanel(ScreenPanel):
|
|||||||
open_menu.set_hexpand(False)
|
open_menu.set_hexpand(False)
|
||||||
open_menu.set_halign(Gtk.Align.END)
|
open_menu.set_halign(Gtk.Align.END)
|
||||||
dev.add(open_menu)
|
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] = {
|
opt_array[opt_name] = {
|
||||||
"name": option['name'],
|
"name": option['name'],
|
||||||
|
@ -681,7 +681,7 @@ class KlipperScreen(Gtk.Window):
|
|||||||
def toggle_macro_shortcut(self, value):
|
def toggle_macro_shortcut(self, value):
|
||||||
self.base_panel.show_macro_shortcut(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._config.install_language(lang)
|
||||||
self.lang_ltr = set_text_direction(lang)
|
self.lang_ltr = set_text_direction(lang)
|
||||||
self._config._create_configurable_options(self)
|
self._config._create_configurable_options(self)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user