From 8d78778c5b33fb8535fea6b10780d1f6b6162779 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sun, 10 Nov 2024 12:36:15 -0300 Subject: [PATCH 01/21] network: make a workaround for missbehaving comboboxes --- panels/network.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/panels/network.py b/panels/network.py index 6293843fa..68a68c8c6 100644 --- a/panels/network.py +++ b/panels/network.py @@ -7,6 +7,7 @@ from gi.repository import Gtk, GLib, Pango from ks_includes.screen_panel import ScreenPanel from ks_includes.sdbus_nm import SdbusNm +from datetime import datetime class Panel(ScreenPanel): @@ -14,6 +15,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): title = title or _("Network") super().__init__(screen, title) + self.last_drop_time = datetime.now() self.show_add = False try: self.sdbus_nm = SdbusNm(self.popup_callback) @@ -263,6 +265,18 @@ def remove_network_from_list(self, bssid): del self.networks[bssid] return + def on_popup_shown(self, combo_box, params): + if combo_box.get_property("popup-shown"): + logging.debug("Dropdown popup show") + self.last_drop_time = datetime.now() + else: + elapsed = (datetime.now() - self.last_drop_time).total_seconds() + if elapsed < 0.2: + logging.debug(f"Dropdown closed too fast ({elapsed}s)") + GLib.timeout_add(50, combo_box.popup) + return + logging.debug("Dropdown popup close") + def show_add_network(self, widget, ssid): if self.show_add: return @@ -274,12 +288,14 @@ def show_add_network(self, widget, ssid): del self.labels['add_network'] eap_method = Gtk.ComboBoxText(hexpand=True) + eap_method.connect("notify::popup-shown", self.on_popup_shown) for method in ("peap", "ttls", "pwd", "leap", "md5"): eap_method.append(method, method.upper()) self.labels['network_eap_method'] = eap_method eap_method.set_active(0) phase2 = Gtk.ComboBoxText(hexpand=True) + phase2.connect("notify::popup-shown", self.on_popup_shown) for method in ("mschapv2", "gtc", "pap", "chap", "mschap", "disabled"): phase2.append(method, method.upper()) self.labels['network_phase2'] = phase2 From e74e9515bf075928ad22020d4d31fd9b0167b06a Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Tue, 12 Nov 2024 11:29:21 -0300 Subject: [PATCH 02/21] network: eap fixes --- ks_includes/sdbus_nm.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ks_includes/sdbus_nm.py b/ks_includes/sdbus_nm.py index 4c9f906eb..9226b768f 100644 --- a/ks_includes/sdbus_nm.py +++ b/ks_includes/sdbus_nm.py @@ -272,10 +272,13 @@ def add_network(self, ssid, psk, eap_method, identity="", phase2=None): "key-mgmt": ("s", "wpa-eap"), "eap": ("as", [eap_method]), "identity": ("s", identity), - "password": ("s", psk), + "password": ("s", psk.encode("utf-8")), } if phase2: - properties["802-11-wireless-security"]["phase2_auth"] = ("s", phase2) + if eap_method == "ttls": + properties["802-11-wireless-security"]["phase2_autheap"] = ("s", phase2) + else: + properties["802-11-wireless-security"]["phase2_auth"] = ("s", phase2) elif "WEP" in security_type: properties["802-11-wireless-security"] = { "key-mgmt": ("s", "none"), From 0d0715de195a7eeebb7a9e9c27f0ce09d62c6c34 Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Tue, 12 Nov 2024 15:32:20 +0100 Subject: [PATCH 03/21] Translated using Weblate (Chinese (Simplified Han script)) (#1495) Currently translated at 100.0% (322 of 322 strings) Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/zh_Hans/ Translation: KlipperScreen/KlipperScreen Co-authored-by: Will Zhai --- .../zh_CN/LC_MESSAGES/KlipperScreen.mo | Bin 18037 -> 18063 bytes .../zh_CN/LC_MESSAGES/KlipperScreen.po | 46 +++++++++--------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.mo index add941c6b29798936a334c6ede31478fb89eaf87..8484a275e803cf9f89d8a8cc1e6fd69815ce1a62 100644 GIT binary patch delta 2920 zcmYk-e@s?Y9LMnsC@N|Sf|&@WkxC^Bh$3nzzYNp-xoNpsv$4ujXEQfv^U+cf6=7g9 zoaB!IVmU+~A_5<^{xEH8S}iK4ZU*-OTq~P3-Avc}!~Hh<>vg{0bME(i@8LX`zxRZc z6o)j-jqpV}juVpNILSB!V=x!PaXAjal@_nXDB=wk7n!9vhJ1y27W)yqI12y3c#KT- zoM_HZb$mS&Yb;TWYTyK_fv->vT*4@9!|~W{`Nt=D^9iW+$*7IfEzYtyA5~|u#jjy3 z@v2Ea@4+3mpx721u(%qBvGA1n4eCwWQ5%M)d2v6~n~p=}=a>so8!fYVJ?i;Qs74R? zY*3Bru-*WhT}gsSWNm_amy z8XSWyI23Q99=wNouz6RCEWmLnzqMpBx)b%-`>0V-x zITUp?ao8WnnyIKlnW)AVp&D3;D!AF)j%s)h#$Y9C{Yg~abEx%~dSd?mS1fTA^}tPw z@0t&B2>ISqy#h~|PoXv%kNOj2pbEcj`FF7ou@ChtE42AaR3nEKv%m8RgJQ}=8+8)*E$)-y<)cs=#-R!(U??V8J{fgF>8O)if~xz5xgLEgu$6(_X%i)=BRhyH za01oHMe_&q2IiCRM&0VvY2F5la3JxksJpZpN8mObj7Lx>dU_gve=WE`Vm4k!b@=pj z#|gs}R6NAs>Ru;H=cu9zr@S?oK+0;Om{ZM}=4{k+FPY1gXMg8SORP2D*97?@i%U_Ls|wY59qNtFqCPAaQGb%Fs15Fz zPL}uc8;GixfSP~S;&kl!{bw>5!9*TvgV#|DH=<5p2dcoQ=4qS%0(Ej1P`AC!@>fy6 z^G@uG_so!Nuki@f-HOiU{8e}?37Lf2IL*vLF0?b>=8G-A&pd)UiF(wA&8Rw;P$zN) zM`1VejdJ?uc$Ym7^`h%?IRAJCg(Os{7JDw8EjW*AsLgCQZ<`NL8%E@M>mqS1aXc!Y zhpImhRsS7~#SN$i%6ts;sjNeNp_)+Nf$van6twxfsDi!oyrUjq4o2mpF%e@i0dp7`Hg1e76xHV6q>vJ`O(dB;T?fwz_yM+ac7|3={~xx<4l8Fbi5-_>Hl)d+>p@1lJY@Qo0c)}xZCTxKdf^DWeS#c z1seYwzWiwXzu_y7vK`H>!GkT1hg(|ghTWV>H(5)_HZ$A~vtFqn-5AH5?&z$s!XRi(W7b`)^N&o-= delta 2891 zcmYk-drZ}39LMn=7bP)fC>n|q-or~Nf+$FaV8zg8HYbsrvuS09noj5HkK;n3OfGs% zypk~?TZ-n<10hG9x{A$BH_KMdHRYV+L1%X_Gq-ww_JS*PQ+i{$z49A&>3D_T}V^5ri590!hmttSyl@^zq8*vo*&1Nh1BK{eNVi%@j z?@6v>%%Vw-r+eacOH`s7XhJp6j%wfx_QeZ09y=|cnCZ@^qSlW^9h_nDG>Z#Rb!J;! ziYdg4Gd=Fc^|qkW7HqY+9+O%4xp@}#B$rVK-nTd=%YD*esC=PWjM_if;$^7)t5A(@ z_Sj$-s>4R}h~-bB3U*-k4OrZXDtsL$V9aE9U8b3fT0aB(;5=0QB{&3Eq3U{S86+{N z!%=tu2jE52#_On!_fQAMWxE^GP**tGEHD?E@8EFe>rnfTqxOG;I{1p4_c#$t+%oT@ zt|n#*FAOG_15r;j64lrgR0GeU3NAL6p$=Sy{n3M3{}HNgBWnGj?wG&7-x8-#8@{&q zvKhpFK@b&^(RO}6@J0;B^XD%1QW5$<~^u7?y5 zR3pvim*!b4B7YwBRu9Z|514`p#4}Ov(u+74-@r$(5_O~7bNT&i!2uG_;u%zjy{GY1 zn2d@Co9U=VC!2X@A*$hG^JUb&W#&2@L|kFtmY8S0q6zXVEMALxxyn(USEHVEAL_%>jQW$DLLKmf8AkoO z{zTP_pW)6YqT*ES{{4?+Fqp(R)B#1PLJLvv#+#@Ob!NTIH==It2N^G8zX~T5xCbPmCQ{7Dkr&v>via4Pf7`4?72JwCupU+K5b8$!I26w# z-zevI)B}wxbRTqnA@`q3qKt$JZNl!C&K5MG8frH?%u8k`>cHPDzJsHQV`sYgaj5!} zQ1$0x3NAq1^g0g%eJZO_U#Q)v??4OciO$*lWz<18Fb4lHZ(IHzrjw6)#(inWqSnvB zXq=C+SZeu&X5y<1RIto^%U6`tI>Z;3@m+M!@ZOeCdyV&M=Jc4z$$IaItQ_B>tU*yj zCT4^V*M#f*q4)j4)`P*;s_^y`*Y>rgEh>9*Wtn%+lrZIx40sGzH1 zyDvK@C8}qrr7;-T?JLR6i=(mQp^f{))t~Z+;nvSWZB5s9ZlLkdzDhdqb=4j8elcUI JFRfrj%)gFqyT||l diff --git a/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.po index e72f31e00..11ca091b6 100644 --- a/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-09 18:08-0300\n" -"PO-Revision-Date: 2024-10-28 08:38+0000\n" -"Last-Translator: China-Mr-Hou \n" +"PO-Revision-Date: 2024-10-29 18:12+0000\n" +"Last-Translator: Will Zhai \n" "Language-Team: Chinese (Simplified Han script) \n" "Language: zh_CN\n" @@ -27,7 +27,7 @@ msgid "(default)" msgstr "(默认)" msgid "24 Hour Time" -msgstr "24小时制" +msgstr "使用24小时制" msgid "A FIRMWARE_RESTART may fix the issue." msgstr "重启Klipper固件可能会解决这个问题。" @@ -140,7 +140,7 @@ msgid "Cannot connect to Moonraker" msgstr "无法连接到Moonraker" msgid "Changes how the interface looks" -msgstr "调整用户界面样式" +msgstr "调整用户界面外观" msgid "Changes how the time remaining is calculated" msgstr "调整剩余时间计算方法" @@ -149,7 +149,7 @@ msgid "Channel" msgstr "群组" msgid "Check ADXL Wiring" -msgstr "请检查加速度计的连线" +msgstr "请检查加速度计的接线" msgid "Checking for updates, please wait..." msgstr "正在检查更新,请稍等..." @@ -161,7 +161,7 @@ msgid "Close" msgstr "关闭" msgid "Close messages after a timeout" -msgstr "超时自动关闭通知" +msgstr "超时后自动关闭通知" msgid "Complete" msgstr "完成" @@ -216,7 +216,7 @@ msgid "Disable Motors" msgstr "关闭电机" msgid "Disable for 12hs with am / pm" -msgstr "12小时制中不显示 am/pm" +msgstr "禁用以使用12小时制 (AM/PM)" msgid "Disconnect" msgstr "断开" @@ -248,19 +248,19 @@ msgid "Error clearing active spool" msgstr "退出当前耗材时出错" msgid "Error getting active spool" -msgstr "获取当前耗材时出错" +msgstr "加载当前耗材时出错" msgid "Error setting active spool" -msgstr "设置当前耗材时出错" +msgstr "激活当前耗材时出错" msgid "Error trying to fetch spools" msgstr "尝试获取耗材时出错" msgid "Error: Couldn't get a position to probe" -msgstr "错误: 不能获取位置来探测" +msgstr "错误: 无法获取用来探测的位置" msgid "Estimated Time" -msgstr "预估时间" +msgstr "预估剩余时间" msgid "Estimated Time Method" msgstr "估算剩余时间方式" @@ -338,7 +338,7 @@ msgid "Flow:" msgstr "流量:" msgid "Flowrate:" -msgstr "流速:" +msgstr "流量:" msgid "Font Size" msgstr "字体大小" @@ -371,22 +371,22 @@ msgid "Hide sensors in Temp." msgstr "在温度显示中隐藏传感器的温度" msgid "Home" -msgstr "归零" +msgstr "归位" msgid "Home All" -msgstr "全部归零" +msgstr "全部归位" msgid "Home X" -msgstr "X轴归零" +msgstr "X轴归位" msgid "Home XY" -msgstr "XY轴归零" +msgstr "XY轴归位" msgid "Home Y" -msgstr "Y轴归零" +msgstr "Y轴归位" msgid "Home Z" -msgstr "Z轴归零" +msgstr "Z轴归位" msgid "Host" msgstr "主机" @@ -398,7 +398,7 @@ msgid "ID" msgstr "ID" msgid "Icon Theme" -msgstr "主题" +msgstr "外观" msgid "Initializing printer..." msgstr "正在初始化打印机..." @@ -443,7 +443,7 @@ msgid "It's possible that the configuration is not correct" msgstr "设置文件可能存在错误" msgid "Job Status" -msgstr "工作状态" +msgstr "任务状态" msgid "Klipper Restart" msgstr "重启Klipper" @@ -810,10 +810,10 @@ msgid "Show cursor" msgstr "显示光标" msgid "Show only devices that are able to be set" -msgstr "只显示可以主动控制温度的设备" +msgstr "只显示可以设置温度的设备" msgid "Shutdown" -msgstr "关闭" +msgstr "关机" msgid "Size" msgstr "大小" @@ -843,7 +843,7 @@ msgid "Speed:" msgstr "速度:" msgid "Square Corner Velocity" -msgstr "直角速度" +msgstr "直角拐弯速度" msgid "Standby" msgstr "待机" From 9a6aeaa43eebd0015d6bcb0dc66f1b6affcfd126 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Mon, 28 Oct 2024 08:27:36 -0300 Subject: [PATCH 04/21] feat: lockscreen closes #1490 --- docs/Configuration.md | 6 ++ ks_includes/config.py | 15 ++-- ks_includes/widgets/keyboard.py | 5 +- ks_includes/widgets/lockscreen.py | 96 +++++++++++++++++++++++++ panels/shutdown.py | 10 ++- screen.py | 37 ++++++---- styles/base.css | 18 +++++ styles/colorized/images/lock.svg | 93 ++++++++++++++++++++++++ styles/material-dark/images/lock.svg | 40 +++++++++++ styles/material-darker/images/lock.svg | 41 +++++++++++ styles/material-light/images/lock.svg | 40 +++++++++++ styles/z-bolt/images/lock.svg | 97 ++++++++++++++++++++++++++ 12 files changed, 474 insertions(+), 24 deletions(-) create mode 100644 ks_includes/widgets/lockscreen.py create mode 100644 styles/colorized/images/lock.svg create mode 100644 styles/material-dark/images/lock.svg create mode 100644 styles/material-darker/images/lock.svg create mode 100644 styles/material-light/images/lock.svg create mode 100644 styles/z-bolt/images/lock.svg diff --git a/docs/Configuration.md b/docs/Configuration.md index b9b3576ab..051ee6ca8 100644 --- a/docs/Configuration.md +++ b/docs/Configuration.md @@ -34,6 +34,12 @@ The options listed here are not editable from within the user interface. # Define one or more moonraker power devices that turn on/off with the screensaver (CSV list) # screen_on_devices: example1, example2 # screen_off_devices: example1, example2 + +# Define the password to use when locking the screen, this is not secure +# it's saved as plain text, it's meant to be a deterrent for kids or people at shows +# it will be redacted from the logs. +# default is no password +# lock_password: example_password ``` !!! tip diff --git a/ks_includes/config.py b/ks_includes/config.py index ecd855488..e0900c1e0 100644 --- a/ks_includes/config.py +++ b/ks_includes/config.py @@ -168,6 +168,7 @@ def validate_config(self, config, string="", remove=False): strs = ( 'default_printer', 'language', 'print_sort_dir', 'theme', 'screen_blanking_printing', 'font_size', 'print_estimate_method', 'screen_blanking', "screen_on_devices", "screen_off_devices", 'print_view', + "lock_password" ) numbers = ( 'job_complete_timeout', 'job_error_timeout', 'move_speed_xy', 'move_speed_z', @@ -584,14 +585,16 @@ def set(self, section, name, value): self.config.set(section, name, value) def log_config(self, config): + sensitive_keys = [ + r'(moonraker_api_key\s*(?:=|:)\s*)\S+', + r'(lock_password\s*(?:=|:)\s*)\S+', + ] + config_str = self._build_config_string(config) + for pattern in sensitive_keys: + config_str = re.sub(pattern, r'\1[redacted]', config_str) lines = [ - " " "===== Config File =====", - re.sub( - r'(moonraker_api_key\s*=\s*\S+)', - 'moonraker_api_key = [redacted]', - self._build_config_string(config) - ), + config_str, "=======================" ] logging.info("\n".join(lines)) diff --git a/ks_includes/widgets/keyboard.py b/ks_includes/widgets/keyboard.py index 2545a35f2..ad8d4df40 100644 --- a/ks_includes/widgets/keyboard.py +++ b/ks_includes/widgets/keyboard.py @@ -10,7 +10,7 @@ class Keyboard(Gtk.Box): langs = ["de", "en", "fr", "es"] - def __init__(self, screen, close_cb, entry=None): + def __init__(self, screen, close_cb, entry=None, box=None): super().__init__(orientation=Gtk.Orientation.VERTICAL) self.shift = [] self.shift_active = False @@ -20,6 +20,7 @@ def __init__(self, screen, close_cb, entry=None): self.timeout = self.clear_timeout = None self.entry = entry self.purpose = self.entry.get_input_purpose() + self.box = box or None language = self.detect_language(screen._config.get_main_config().get("language", None)) @@ -218,7 +219,7 @@ def update_entry(self, widget, key): if key == "⌫": Gtk.Entry.do_backspace(self.entry) elif key == "↓": - self.close_cb(entry=self.entry) + self.close_cb(entry=self.entry, box=self.box) return elif key == "↑": self.toggle_shift() diff --git a/ks_includes/widgets/lockscreen.py b/ks_includes/widgets/lockscreen.py new file mode 100644 index 000000000..3ac4eb305 --- /dev/null +++ b/ks_includes/widgets/lockscreen.py @@ -0,0 +1,96 @@ +import logging +import gi + +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + + +class LockScreen: + def __init__(self, screen): + self.screen = screen + self.lock_box = None + self.unlock_box = None + + def lock(self, widget): + self.screen._menu_go_back(None, True) + logging.info("Locked the screen") + close = Gtk.Button() + close.connect("clicked", self.unlock) + self.lock_box = Gtk.Box( + width_request=self.screen.width, height_request=self.screen.height, + halign=Gtk.Align.CENTER + ) + self.lock_box.pack_start(close, True, True, 0) + self.lock_box.get_style_context().add_class("lock") + self.screen.overlay.add_overlay(self.lock_box) + close.grab_focus() + self.lock_box.show_all() + + def unlock(self, widget): + if not self.unlock_box: + self.unlock_box = self.create_unlock_box() + self.screen.overlay.add_overlay(self.unlock_box) + self.unlock_box.show_all() + self.screen.overlay.get_children()[0].hide() + + def create_unlock_box(self): + box = Gtk.Box( + orientation=Gtk.Orientation.VERTICAL, + width_request=self.screen.width, height_request=self.screen.height, + valign=Gtk.Align.CENTER + ) + entry = Gtk.Entry(hexpand=True, vexpand=False, placeholder_text=_("Password")) + entry.set_input_purpose(Gtk.InputPurpose.PASSWORD) + entry.set_visibility(False) + entry.connect("focus-in-event", self.screen.show_keyboard, box, self.relock) + entry.connect("activate", self.unlock_attempt, entry) + entry.get_style_context().add_class("lockscreen_entry") + entry.set_icon_from_icon_name(Gtk.EntryIconPosition.SECONDARY, "view-reveal-symbolic") + entry.connect("icon-press", self.show_pass) + ok = Gtk.Button(label=_("Unlock")) + ok.connect("clicked", self.unlock_attempt, entry) + ok.get_style_context().add_class("lockscreen_button") + entry_row = Gtk.Box(hexpand=True, vexpand=True, valign=Gtk.Align.CENTER) + entry_row.pack_start(entry, True, True, 0) + entry_row.pack_start(ok, False, True, 0) + box.pack_start(entry_row, True, True, 0) + return box + + @staticmethod + def show_pass(entry, icon_pos, event): + entry.grab_focus() + visible = not entry.get_visibility() + entry.set_visibility(visible) + if visible: + entry.set_icon_from_icon_name(Gtk.EntryIconPosition.SECONDARY, "view-conceal-symbolic") + entry.get_style_context().add_class("active") + else: + entry.set_icon_from_icon_name(Gtk.EntryIconPosition.SECONDARY, "view-reveal-symbolic") + entry.get_style_context().remove_class("active") + + def relock(self, entry=None, box=None): + if not self.lock_box: + return + if self.unlock_box: + self.screen.overlay.remove(self.unlock_box) + self.unlock_box = None + self.lock_box.get_children()[0].grab_focus() + self.screen.overlay.get_children()[0].show_all() + + def unlock_attempt(self, widget, entry): + if entry.get_text() != self.screen._config.get_main_config().get("lock_password", ""): + logging.info("Failed unlock") + self.screen.show_popup_message(_("Unlock failed")) + return + self.clear_lock() + + def clear_lock(self): + if self.lock_box: + self.screen.overlay.remove(self.lock_box) + if self.unlock_box: + self.screen.overlay.remove(self.unlock_box) + self.lock_box = None + self.unlock_box = None + self.screen.remove_keyboard() + self.screen.overlay.get_children()[0].show() + logging.info("Unlocked") diff --git a/panels/shutdown.py b/panels/shutdown.py index ad04a01ec..0dcb45c3e 100644 --- a/panels/shutdown.py +++ b/panels/shutdown.py @@ -24,12 +24,16 @@ def __init__(self, screen, title): restart_ks = self._gtk.Button("refresh", _("Restart") + " KlipperScreen", "color3") restart_ks.connect("clicked", self._screen.restart_ks) + lock_screen = self._gtk.Button("lock", _("Lock"), "color3") + lock_screen.connect("clicked", self._screen.lock_screen.lock) + self.main = Gtk.Grid(row_homogeneous=True, column_homogeneous=True) if self._printer and self._printer.state not in {'disconnected', 'startup', 'shutdown', 'error'}: - self.main.attach(estop, 0, 0, 1, 1) + self.main.attach(estop, 0, 0, 1, 2) self.main.attach(restart_ks, 1, 0, 1, 1) - self.main.attach(poweroff, 0, 1, 1, 1) - self.main.attach(restart, 1, 1, 1, 1) + self.main.attach(lock_screen, 2, 0, 1, 1) + self.main.attach(poweroff, 1, 1, 1, 1) + self.main.attach(restart, 2, 1, 1, 1) self.content.add(self.main) def reboot_poweroff(self, widget, method): diff --git a/screen.py b/screen.py index d18e3f4c5..384d9a90a 100755 --- a/screen.py +++ b/screen.py @@ -29,9 +29,11 @@ from ks_includes.printer import Printer from ks_includes.widgets.keyboard import Keyboard from ks_includes.widgets.prompts import Prompt +from ks_includes.widgets.lockscreen import LockScreen from ks_includes.config import KlipperScreenConfig from panels.base_panel import BasePanel + logging.getLogger("urllib3").setLevel(logging.WARNING) klipperscreendir = pathlib.Path(__file__).parent.resolve() @@ -77,6 +79,7 @@ class KlipperScreen(Gtk.Window): prompt = None tempstore_timeout = None + def __init__(self, args): self.server_info = None try: @@ -150,7 +153,9 @@ def __init__(self, args): self.set_icon_from_file(os.path.join(klipperscreendir, "styles", "icon.svg")) self.base_panel = BasePanel(self) self.change_theme(self.theme) - self.add(self.base_panel.main_grid) + self.overlay = Gtk.Overlay() + self.add(self.overlay) + self.overlay.add_overlay(self.base_panel.main_grid) self.show_all() self.update_cursor(self.show_cursor) min_ver = (3, 8) @@ -167,6 +172,7 @@ def __init__(self, args): return self.base_panel.activate() self.set_screenblanking_timeout(self._config.get_main_config().get('screen_blanking')) + self.lock_screen = LockScreen(self) self.log_notification("KlipperScreen Started", 1) self.initial_connection() @@ -639,8 +645,7 @@ def show_screensaver(self): box = Gtk.Box(halign=Gtk.Align.CENTER, width_request=self.width, height_request=self.height) box.pack_start(close, True, True, 0) box.get_style_context().add_class("screensaver") - self.remove(self.base_panel.main_grid) - self.add(box) + self.overlay.add_overlay(box) # Avoid leaving a cursor-handle close.grab_focus() @@ -655,9 +660,8 @@ def close_screensaver(self, widget=None): if self.screensaver is None: return False logging.debug("Closing Screensaver") - self.remove(self.screensaver) + self.overlay.remove(self.screensaver) self.screensaver = None - self.add(self.base_panel.main_grid) if self.use_dpms: self.wake_screen() else: @@ -666,8 +670,8 @@ def close_screensaver(self, widget=None): logging.info(f"Restoring Dialog {dialog}") dialog.show() self.gtk.set_cursor(self.show_cursor, window=self.get_window()) - self.show_all() self.power_devices(None, self._config.get_main_config().get("screen_on_devices", ""), on=True) + self.lock_screen.relock() def check_dpms_state(self): if not self.use_dpms: @@ -1187,12 +1191,16 @@ def retry_init_tempstore(self): self.remove_tempstore_timeout() return self.init_tempstore() - def show_keyboard(self, entry=None, event=None): + def show_keyboard(self, entry=None, event=None, box=None, close_cb=None): if entry is None: logging.debug("Error: no entry provided for keyboard") return + if box is None: + box = self.base_panel.content + if close_cb is None: + close_cb = self.remove_keyboard if self.keyboard is not None: - self.remove_keyboard() + self.remove_keyboard(box=box) entry.grab_focus() kbd_grid = Gtk.Grid() kbd_grid.set_size_request(self.gtk.content_width, self.gtk.keyboard_height) @@ -1206,11 +1214,12 @@ def show_keyboard(self, entry=None, event=None): kbd_grid.set_column_homogeneous(True) kbd_width = 2 if purpose == Gtk.InputPurpose.DIGITS else 3 kbd_grid.attach(Gtk.Box(), 0, 0, 1, 1) - kbd_grid.attach(Keyboard(self, self.remove_keyboard, entry=entry), 1, 0, kbd_width, 1) + kbd = Keyboard(self, close_cb, entry=entry, box=box) + kbd_grid.attach(kbd, 1, 0, kbd_width, 1) kbd_grid.attach(Gtk.Box(), kbd_width + 1, 0, 1, 1) self.keyboard = {"box": kbd_grid} - self.base_panel.content.pack_end(kbd_grid, False, False, 0) - self.base_panel.content.show_all() + box.pack_end(kbd_grid, False, False, 0) + box.show_all() def _show_matchbox_keyboard(self, kbd_grid): env = os.environ.copy() @@ -1240,12 +1249,14 @@ def _show_matchbox_keyboard(self, kbd_grid): } return - def remove_keyboard(self, entry=None, event=None): + def remove_keyboard(self, entry=None, event=None, box=None): if self.keyboard is None: return + if box is None: + box = self.base_panel.content if 'process' in self.keyboard: os.kill(self.keyboard['process'].pid, SIGTERM) - self.base_panel.content.remove(self.keyboard['box']) + box.remove(self.keyboard['box']) self.keyboard = None if entry: entry.set_sensitive(False) # Move the focus diff --git a/styles/base.css b/styles/base.css index 23a08409e..c03d2ec78 100644 --- a/styles/base.css +++ b/styles/base.css @@ -563,6 +563,24 @@ popover button { margin: 0; } +.lock +.lock button +.lock button:hover, +.lock button:focus, +.lock button:active { + border: 0; + margin: 0; + background-color: Transparent; +} + +.lockscreen_entry { + margin: 2em; +} + +.lockscreen_button { + padding: 2em; +} + .screensaver, .screensaver button, .screensaver button:hover, diff --git a/styles/colorized/images/lock.svg b/styles/colorized/images/lock.svg new file mode 100644 index 000000000..2fa9a3db0 --- /dev/null +++ b/styles/colorized/images/lock.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + diff --git a/styles/material-dark/images/lock.svg b/styles/material-dark/images/lock.svg new file mode 100644 index 000000000..1d032eb9d --- /dev/null +++ b/styles/material-dark/images/lock.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/styles/material-darker/images/lock.svg b/styles/material-darker/images/lock.svg new file mode 100644 index 000000000..32d3ef189 --- /dev/null +++ b/styles/material-darker/images/lock.svg @@ -0,0 +1,41 @@ + + + + + + diff --git a/styles/material-light/images/lock.svg b/styles/material-light/images/lock.svg new file mode 100644 index 000000000..0ac185e2e --- /dev/null +++ b/styles/material-light/images/lock.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/styles/z-bolt/images/lock.svg b/styles/z-bolt/images/lock.svg new file mode 100644 index 000000000..4668e7af8 --- /dev/null +++ b/styles/z-bolt/images/lock.svg @@ -0,0 +1,97 @@ + + + + + + image/svg+xml + + folder + + + + + + + folder + Created with Sketch. + + + + + + + From f4c6801a8c562aa9f505864add76060d036b723b Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Mon, 28 Oct 2024 12:04:31 -0300 Subject: [PATCH 05/21] refactor: extract screensaver --- ks_includes/KlippyGtk.py | 4 +- ks_includes/widgets/heatergraph.py | 2 +- ks_includes/widgets/screensaver.py | 82 ++++++++++++++++++++++++++++++ panels/job_status.py | 4 +- screen.py | 78 +++------------------------- 5 files changed, 94 insertions(+), 76 deletions(-) create mode 100644 ks_includes/widgets/screensaver.py diff --git a/ks_includes/KlippyGtk.py b/ks_includes/KlippyGtk.py index 9da1e66ea..6759f9f1f 100644 --- a/ks_includes/KlippyGtk.py +++ b/ks_includes/KlippyGtk.py @@ -179,7 +179,7 @@ def Button(self, image_name=None, label=None, style=None, scale=None, position=G format_label(b, lines) if style is not None: b.get_style_context().add_class(style) - b.connect("clicked", self.screen.reset_screensaver_timeout) + b.connect("clicked", self.screen.screensaver.reset_timeout) return b @staticmethod @@ -236,7 +236,7 @@ def Dialog(self, title, buttons, content, callback=None, *args): dialog.add_events(Gdk.EventMask.BUTTON_RELEASE_MASK) dialog.connect("button-release-event", self.remove_dialog) - dialog.connect("response", self.screen.reset_screensaver_timeout) + dialog.connect("response", self.screen.screensaver.reset_timeout) dialog.connect("response", callback, *args) dialog.get_style_context().add_class("dialog") diff --git a/ks_includes/widgets/heatergraph.py b/ks_includes/widgets/heatergraph.py index 253dc8245..f92312846 100644 --- a/ks_includes/widgets/heatergraph.py +++ b/ks_includes/widgets/heatergraph.py @@ -22,7 +22,7 @@ def __init__(self, screen, printer, font_size, fullscreen=False, store=None): self.connect('draw', self.draw_graph) self.add_events(Gdk.EventMask.TOUCH_MASK) self.add_events(Gdk.EventMask.BUTTON_PRESS_MASK) - self.connect('button_press_event', screen.reset_screensaver_timeout) + self.connect('button_press_event', screen.screensaver.reset_timeout) self.connect('button_press_event', self.event_cb) self.font_size = round(font_size * 0.75) self.fullscreen = fullscreen diff --git a/ks_includes/widgets/screensaver.py b/ks_includes/widgets/screensaver.py new file mode 100644 index 000000000..8a36a8170 --- /dev/null +++ b/ks_includes/widgets/screensaver.py @@ -0,0 +1,82 @@ +import logging +import gi + +gi.require_version("Gtk", "3.0") +from gi.repository import GLib, Gtk + + +class ScreenSaver: + def __init__(self, screen): + self.screen = screen + self.printer = screen.printer + self.config = screen._config + self.screensaver_timeout = None + self.blackbox = None + + def reset_timeout(self, *args): + if self.screensaver_timeout is not None: + GLib.source_remove(self.screensaver_timeout) + self.screensaver_timeout = None + if self.screen.use_dpms: + return + if self.printer and self.printer.state in ("printing", "paused"): + use_screensaver = self.config.get_main_config().get('screen_blanking_printing') != "off" + else: + use_screensaver = self.config.get_main_config().get('screen_blanking') != "off" + if use_screensaver: + self.screensaver_timeout = GLib.timeout_add_seconds( + self.screen.blanking_time, self.show) + + def show(self): + logging.debug("Showing Screensaver") + if self.blackbox is not None: + self.close() + if self.screensaver_timeout is not None: + GLib.source_remove(self.screensaver_timeout) + self.screensaver_timeout = None + if self.screen.blanking_time == 0: + return False + self.screen.remove_keyboard() + self.screen.close_popup_message() + for dialog in self.screen.dialogs: + logging.debug("Hiding dialog") + dialog.hide() + + close = Gtk.Button() + close.connect("clicked", self.close) + + box = Gtk.Box( + halign=Gtk.Align.CENTER, width_request=self.screen.width, height_request=self.screen.height) + box.pack_start(close, True, True, 0) + box.get_style_context().add_class("screensaver") + self.blackbox = box + for child in self.screen.overlay.get_children(): + child.hide() + self.screen.overlay.add(self.blackbox) + + # Avoid leaving a cursor-handle + close.grab_focus() + self.screen.gtk.set_cursor(False, window=self.screen.get_window()) + + self.blackbox.show_all() + self.screen.power_devices(None, self.config.get_main_config().get("screen_off_devices", ""), on=False) + return False + + def close(self, widget=None): + if self.blackbox is None: + return False + logging.debug("Closing Screensaver") + self.screen.overlay.remove(self.blackbox) + self.blackbox = None + for child in self.screen.overlay.get_children(): + child.show() + if self.screen.use_dpms: + self.screen.wake_screen() + else: + self.reset_timeout() + for dialog in self.screen.dialogs: + logging.info(f"Restoring Dialog {dialog}") + dialog.show() + self.screen.gtk.set_cursor(self.screen.show_cursor, window=self.screen.get_window()) + self.screen.power_devices(None, self.config.get_main_config().get("screen_on_devices", ""), on=True) + self.screen.lock_screen.relock() diff --git a/panels/job_status.py b/panels/job_status.py index ab78d05f5..0c2a5d87b 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -465,7 +465,7 @@ def disable_button(self, *args): self.buttons[arg].set_sensitive(False) def new_print(self): - self._screen.close_screensaver() + self._screen.screensaver.close() if "virtual_sdcard" in self._printer.data: logging.info("reseting progress") self._printer.data["virtual_sdcard"]["progress"] = 0 @@ -722,7 +722,7 @@ def set_state(self, state, msg=""): self.show_buttons_for_state() def _add_timeout(self, timeout): - self._screen.close_screensaver() + self._screen.screensaver.close() if timeout != 0: GLib.timeout_add_seconds(timeout, self.close_panel) diff --git a/screen.py b/screen.py index 384d9a90a..98c240d07 100755 --- a/screen.py +++ b/screen.py @@ -30,6 +30,7 @@ from ks_includes.widgets.keyboard import Keyboard from ks_includes.widgets.prompts import Prompt from ks_includes.widgets.lockscreen import LockScreen +from ks_includes.widgets.screensaver import ScreenSaver from ks_includes.config import KlipperScreenConfig from panels.base_panel import BasePanel @@ -63,12 +64,10 @@ class KlipperScreen(Gtk.Window): keyboard = None panels = {} popup_message = None - screensaver = None printers = None printer = None updating = False _ws = None - screensaver_timeout = None reinit_count = 0 max_retries = 4 initialized = False @@ -79,7 +78,6 @@ class KlipperScreen(Gtk.Window): prompt = None tempstore_timeout = None - def __init__(self, args): self.server_info = None try: @@ -147,6 +145,7 @@ def __init__(self, args): self.show_cursor = self._config.get_main_config().getboolean("show_cursor", fallback=False) self.setup_gtk_settings() self.style_provider = Gtk.CssProvider() + self.screensaver = ScreenSaver(self) self.gtk = KlippyGtk(self) self.base_css = "" self.load_base_styles() @@ -181,7 +180,7 @@ def update_cursor(self, show: bool): self.gtk.set_cursor(show, window=self.get_window()) def state_execute(self, state, callback): - self.close_screensaver() + self.screensaver.close() if 'printer_select' in self._cur_panels: logging.debug(f"Connected printer chaged {state}") return False @@ -393,7 +392,7 @@ def show_popup_message(self, message, level=3, from_ws=False): return self.last_popup_time = datetime.now() - self.close_screensaver() + self.screensaver.close() if self.popup_message is not None: self.close_popup_message() @@ -591,7 +590,7 @@ def _remove_all_panels(self): self._remove_current_panel() del self._cur_panels[-1] self._cur_panels.clear() - self.close_screensaver() + self.screensaver.close() gc.collect() def _remove_current_panel(self): @@ -611,68 +610,6 @@ def _menu_go_back(self, widget=None, home=False): break self.attach_panel(self._cur_panels[-1]) - def reset_screensaver_timeout(self, *args): - if self.screensaver_timeout is not None: - GLib.source_remove(self.screensaver_timeout) - self.screensaver_timeout = None - if self.use_dpms: - return - if self.printer and self.printer.state in ("printing", "paused"): - use_screensaver = self._config.get_main_config().get('screen_blanking_printing') != "off" - else: - use_screensaver = self._config.get_main_config().get('screen_blanking') != "off" - if use_screensaver: - self.screensaver_timeout = GLib.timeout_add_seconds(self.blanking_time, self.show_screensaver) - - def show_screensaver(self): - logging.debug("Showing Screensaver") - if self.screensaver is not None: - self.close_screensaver() - if self.screensaver_timeout is not None: - GLib.source_remove(self.screensaver_timeout) - self.screensaver_timeout = None - if self.blanking_time == 0: - return False - self.remove_keyboard() - self.close_popup_message() - for dialog in self.dialogs: - logging.debug("Hiding dialog") - dialog.hide() - - close = Gtk.Button() - close.connect("clicked", self.close_screensaver) - - box = Gtk.Box(halign=Gtk.Align.CENTER, width_request=self.width, height_request=self.height) - box.pack_start(close, True, True, 0) - box.get_style_context().add_class("screensaver") - self.overlay.add_overlay(box) - - # Avoid leaving a cursor-handle - close.grab_focus() - self.gtk.set_cursor(False, window=self.get_window()) - - self.screensaver = box - self.screensaver.show_all() - self.power_devices(None, self._config.get_main_config().get("screen_off_devices", ""), on=False) - return False - - def close_screensaver(self, widget=None): - if self.screensaver is None: - return False - logging.debug("Closing Screensaver") - self.overlay.remove(self.screensaver) - self.screensaver = None - if self.use_dpms: - self.wake_screen() - else: - self.reset_screensaver_timeout() - for dialog in self.dialogs: - logging.info(f"Restoring Dialog {dialog}") - dialog.show() - self.gtk.set_cursor(self.show_cursor, window=self.get_window()) - self.power_devices(None, self._config.get_main_config().get("screen_on_devices", ""), on=True) - self.lock_screen.relock() - def check_dpms_state(self): if not self.use_dpms: return False @@ -682,8 +619,7 @@ def check_dpms_state(self): self.set_dpms(False) return False elif state != functions.DPMS_State.On: - if self.screensaver is None: - self.show_screensaver() + self.screensaver.show() return True def wake_screen(self): @@ -737,7 +673,7 @@ def set_screenblanking_timeout(self, time): logging.debug("Not using DPMS") if not self.wayland: os.system(f"xset -display {self.display_number} dpms 0 0 0") - self.reset_screensaver_timeout() + self.screensaver.reset_timeout() return def show_printer_select(self, widget=None): From 4172d59dbe547334e3b203ad3445b039b7007915 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Tue, 12 Nov 2024 16:45:35 -0300 Subject: [PATCH 06/21] feat: Menu active status (#1482) * feat: menu active status, now used to show if homed and leveled * style: menu_active class --- config/move_menu.conf | 7 +++++++ ks_includes/config.py | 5 +++-- ks_includes/printer.py | 3 +++ panels/menu.py | 18 +++++++++++++++++- styles/base.css | 7 +++++++ styles/colorized/style.css | 6 ++++++ styles/material-dark/style.css | 6 ++++++ styles/material-darker/style.css | 6 ++++++ styles/material-light/style.css | 9 +++++++++ styles/z-bolt/style.css | 5 +++++ 10 files changed, 69 insertions(+), 3 deletions(-) diff --git a/config/move_menu.conf b/config/move_menu.conf index e5342fbcf..b34d4bde7 100644 --- a/config/move_menu.conf +++ b/config/move_menu.conf @@ -7,30 +7,35 @@ name: {{ gettext('Home X') }} icon: home-x method: printer.gcode.script params: {"script":"G28 X"} +active: {{ 'x' in printer.homed_axes }} [menu move homing homey] name: {{ gettext('Home Y') }} icon: home-y method: printer.gcode.script params: {"script":"G28 Y"} +active: {{ 'y' in printer.homed_axes }} [menu move homing homez] name: {{ gettext('Home Z') }} icon: home-z method: printer.gcode.script params: {"script":"G28 Z"} +active: {{ 'z' in printer.homed_axes }} [menu move homing homeall] name: {{ gettext('Home All') }} icon: home method: printer.gcode.script params: {"script":"G28"} +active: {{ 'xyz' in printer.homed_axes }} [menu move homing homexy] name: {{ gettext('Home XY') }} icon: home method: printer.gcode.script params: {"script":"G28 X Y"} +active: {{ 'xy' in printer.homed_axes }} [menu move homing quad_gantry_level] name: {{ gettext('Quad Gantry Level') }} @@ -38,6 +43,7 @@ icon: home-z method: printer.gcode.script params: {"script":"QUAD_GANTRY_LEVEL"} enable: {{ 'quad_gantry_level' in printer.config_sections }} +active: {{ printer.quad_gantry_level.applied }} [menu move homing Z-Tilt] name: {{ gettext('Z Tilt') }} @@ -45,3 +51,4 @@ icon: z-tilt method: printer.gcode.script params: {"script":"Z_TILT_ADJUST"} enable: {{ 'z_tilt' in printer.config_sections }} +active: {{ printer.z_tilt.applied }} \ No newline at end of file diff --git a/ks_includes/config.py b/ks_includes/config.py index e0900c1e0..91167fd81 100644 --- a/ks_includes/config.py +++ b/ks_includes/config.py @@ -191,7 +191,7 @@ def validate_config(self, config, string="", remove=False): strs = ('gcode', '') numbers = [f'{option}' for option in config[section] if option != 'gcode'] elif section.startswith('menu '): - strs = ('name', 'icon', 'panel', 'method', 'params', 'enable', 'confirm', 'style') + strs = ('name', 'icon', 'panel', 'method', 'params', 'enable', 'confirm', 'style', 'active') elif section.startswith('graph')\ or section.startswith('displayed_macros')\ or section.startswith('spoolman'): @@ -618,7 +618,8 @@ def _build_menu_item(self, menu, name): "confirm": cfg.get("confirm", None), "enable": cfg.get("enable", "True"), "params": cfg.get("params", "{}"), - "style": cfg.get("style", None) + "style": cfg.get("style", None), + "active": cfg.get("active", None) } return {name[(len(menu) + 6):]: item} diff --git a/ks_includes/printer.py b/ks_includes/printer.py index 55ac106bb..a5d1ec89a 100644 --- a/ks_includes/printer.py +++ b/ks_includes/printer.py @@ -257,6 +257,9 @@ def get_printer_status_data(self): "gcode_macros": {"count": len(self.get_gcode_macros()), "list": self.get_gcode_macros()}, "leds": {"count": self.ledcount}, "config_sections": list(self.config.keys()), + "homed_axes": self.get_stat("toolhead", "homed_axes"), + "quad_gantry_level": self.get_stat("quad_gantry_level"), + "z_tilt": self.get_stat("z_tilt"), } } diff --git a/panels/menu.py b/panels/menu.py index 2ef1ef7b2..2980534ba 100644 --- a/panels/menu.py +++ b/panels/menu.py @@ -83,15 +83,31 @@ def create_menu_items(self): b.connect("clicked", self._screen._send_action, item['method'], params) else: b.connect("clicked", self._screen._go_to_submenu, key) + b.set_name(key) self.labels[key] = b def evaluate_enable(self, enable): + if enable is None: + return False if enable == "{{ moonraker_connected }}": logging.info(f"moonraker connected {self._screen._ws.connected}") return self._screen._ws.connected try: j2_temp = Template(enable, autoescape=True) - return j2_temp.render(self.j2_data) == 'True' + return j2_temp.render(self._printer.get_printer_status_data()) == 'True' except Exception as e: logging.debug(f"Error evaluating enable statement: {enable}\n{e}") return False + + def process_update(self, action, data): + if action != "notify_status_update": + return + for item in self.autogrid: + key = item.get_name() + for item_dict in self.items: + if key in item_dict and 'active' in item_dict[key]: + if self.evaluate_enable(item_dict[key]['active']): + item.get_style_context().add_class("menu_active") + else: + item.get_style_context().remove_class("menu_active") + break diff --git a/styles/base.css b/styles/base.css index c03d2ec78..ea0a1fcf4 100644 --- a/styles/base.css +++ b/styles/base.css @@ -80,6 +80,13 @@ button.active { background-color: @active; } + +button.menu_active { + border-width: 0.25em; + border-style: dashed; + border-color: @active; +} + button:disabled, button.color1:disabled, button.color2:disabled, diff --git a/styles/colorized/style.css b/styles/colorized/style.css index 15b7b5550..ac93551ee 100644 --- a/styles/colorized/style.css +++ b/styles/colorized/style.css @@ -110,6 +110,12 @@ popover button { border-color: @solarized-base03; } +button.menu_active { + border-width: 0.25em; + border-style: dashed; + border-color: @solarized-green; +} + switch { background-color: @solarized-base02; } diff --git a/styles/material-dark/style.css b/styles/material-dark/style.css index 581786905..258105a93 100644 --- a/styles/material-dark/style.css +++ b/styles/material-dark/style.css @@ -94,6 +94,12 @@ combobox menuitem { border-color: @bg; } +button.menu_active { + border-width: 0.25em; + border-style: dashed; + border-color: @echo; +} + treeview.view check, switch { background-color: @active-dark; diff --git a/styles/material-darker/style.css b/styles/material-darker/style.css index a59d55623..46d3274a5 100644 --- a/styles/material-darker/style.css +++ b/styles/material-darker/style.css @@ -92,6 +92,12 @@ combobox menuitem { border-color: #121212; } +button.menu_active { + border-width: 0.25em; + border-style: solid; + border-color: #006412; +} + treeview.view check, switch { background-color: #1c1c1c; diff --git a/styles/material-light/style.css b/styles/material-light/style.css index daad1a7ea..c069a64a3 100644 --- a/styles/material-light/style.css +++ b/styles/material-light/style.css @@ -149,6 +149,15 @@ menu { border-color: @border; } +button.menu_active { + border-color: @border; + border-style: solid; + border-width: .25em; + background-color: @bg; + box-shadow: .1em .1em @border; + border-radius: 1em; +} + menuitem { background-color: @bg; border-color: @border; diff --git a/styles/z-bolt/style.css b/styles/z-bolt/style.css index 73867f6ed..9ef5a26f7 100644 --- a/styles/z-bolt/style.css +++ b/styles/z-bolt/style.css @@ -101,6 +101,11 @@ menu { border-color: @lines; } +button.menu_active { + border-width: 0; + background-color: @active; +} + menuitem { background-color: @bg; border-color: @lines; From 43ad9fc6aeb0ae6ae76c4458fe8e65872323e8c6 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Tue, 12 Nov 2024 16:40:37 -0300 Subject: [PATCH 07/21] chore: update changelog --- CHANGELOG.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e5f23b0d..c228ab413 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,12 +2,17 @@ This just tracks the most notable changes, if you want all the details checkout the commit history. Probably all versions contain changes regarding documentation, translation, fixes and other minor refactors +## v0.4.5-* + +* menu buttons can have an 'active' status to change their appearance +* basic lockscreen for shows or kids + ## v0.4.5 (Oct 28, 2024) -* feat: allow calling KlipperScreen panels from gcode -* feat: mesh will automatically call for z_tilt or quad_level if not applied -* feat: show battery status in the topbar -* feat: keyboard to keypad input switch with auto pre-selection +* allow calling KlipperScreen panels from gcode +* bed_mesh: automatically call for z_tilt or quad_level if not applied +* show battery status in the topbar +* macros: keyboard to keypad input switch with auto pre-selection ## v0.4.4 (Sep 16, 2024) * support for different moonraker routes From c79ba16ff738c9084497d19b28d82fc501d89272 Mon Sep 17 00:00:00 2001 From: Axel Pirek Date: Sun, 17 Nov 2024 16:04:13 +0100 Subject: [PATCH 08/21] fix: screen not staying off (#1506) When the screensaver is active and the screen is turned off due to DPMS the unconditional call to self.screensaver.show wakes the screen up again. The check whether the screensaver is already active got lost in the refactor. Fixes #1504 --- ks_includes/widgets/screensaver.py | 3 +++ screen.py | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ks_includes/widgets/screensaver.py b/ks_includes/widgets/screensaver.py index 8a36a8170..f73fa05b0 100644 --- a/ks_includes/widgets/screensaver.py +++ b/ks_includes/widgets/screensaver.py @@ -13,6 +13,9 @@ def __init__(self, screen): self.screensaver_timeout = None self.blackbox = None + def is_showing(self): + return self.blackbox is not None + def reset_timeout(self, *args): if self.screensaver_timeout is not None: GLib.source_remove(self.screensaver_timeout) diff --git a/screen.py b/screen.py index 98c240d07..de5870eba 100755 --- a/screen.py +++ b/screen.py @@ -619,7 +619,8 @@ def check_dpms_state(self): self.set_dpms(False) return False elif state != functions.DPMS_State.On: - self.screensaver.show() + if not self.screensaver.is_showing(): + self.screensaver.show() return True def wake_screen(self): From 114dbdec0cdc8f02ed8a29023d78d294324715c6 Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Sun, 17 Nov 2024 16:04:37 +0100 Subject: [PATCH 09/21] chore(locales): Translations update from Hosted Weblate (#1503) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Translated using Weblate (Spanish) Currently translated at 100.0% (322 of 322 strings) Co-authored-by: gallegonovato Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/es/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Italian) Currently translated at 100.0% (322 of 322 strings) Co-authored-by: Giadej Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/it/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Russian) Currently translated at 97.5% (314 of 322 strings) Co-authored-by: Владимир Чернояров Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/ru/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 99.3% (320 of 322 strings) Co-authored-by: Kayz C Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/zh_Hant/ Translation: KlipperScreen/KlipperScreen --------- Co-authored-by: gallegonovato Co-authored-by: Giadej Co-authored-by: Владимир Чернояров Co-authored-by: Kayz C --- .../locales/es/LC_MESSAGES/KlipperScreen.mo | Bin 18993 -> 18988 bytes .../locales/es/LC_MESSAGES/KlipperScreen.po | 6 +- .../locales/it/LC_MESSAGES/KlipperScreen.mo | Bin 14570 -> 18872 bytes .../locales/it/LC_MESSAGES/KlipperScreen.po | 140 +++++++-------- .../locales/ru/LC_MESSAGES/KlipperScreen.mo | Bin 17618 -> 23334 bytes .../locales/ru/LC_MESSAGES/KlipperScreen.po | 117 ++++++------ .../zh_TW/LC_MESSAGES/KlipperScreen.mo | Bin 13196 -> 17798 bytes .../zh_TW/LC_MESSAGES/KlipperScreen.po | 166 +++++++++--------- 8 files changed, 210 insertions(+), 219 deletions(-) diff --git a/ks_includes/locales/es/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/es/LC_MESSAGES/KlipperScreen.mo index ce002f3706ef6d51e8adf9ff4a8f03e6f779a3a2..43bfddf98cdc2375e6972f2b3abd6312ce6936d6 100644 GIT binary patch delta 316 zcmXZXKMO%o7=ZEjAo3^a;+Axi!9<~M3Z)EOOp}!ELm5n9*6pXpma4ml>NKs|u5v2=A7i*C0ssI2 delta 321 zcmXZXKTASU7=ZEj>#`tV>{vf(a6Zpo945UYsH)aj3zip&^|Wcb9N#@Dnr? zcXtr_3QaA346VWEaL@ER&w0-|a6XpmYpFg<>1k6${@Nl%Y;;8K@foAI#teRA9)B^8 zd(&1|Bu8JOjde_*k4fxf8J{qQZ&<^3)aQP>GL-_0EgNZ!dEp?3C-jx^4pVf`%m=1N zrYESF&rHv;N-yvRH>mIL@Cc865eseqBK)bthW>FD^+V_Apc{Cn4|#PPtSZB^XzO+S L;ywod?d!+^sy--? diff --git a/ks_includes/locales/es/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/es/LC_MESSAGES/KlipperScreen.po index 2821dfa6c..3bf5ebbb1 100644 --- a/ks_includes/locales/es/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/es/LC_MESSAGES/KlipperScreen.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-09 18:08-0300\n" -"PO-Revision-Date: 2024-10-10 13:25+0000\n" +"PO-Revision-Date: 2024-11-13 17:00+0000\n" "Last-Translator: gallegonovato \n" "Language-Team: Spanish \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.8-dev\n" +"X-Generator: Weblate 5.9-dev\n" #, python-format msgid "%s will be updated to version" @@ -893,7 +893,7 @@ msgid "This panel supports up-to 9 screws in a 3x3 Grid" msgstr "Este panel soporta hasta 9 tornillos en una grilla 3x3" msgid "This will affect screw positions and mesh graph" -msgstr "Esto afectará la posición de los tornillos y el gráfico de malla" +msgstr "Afectará la posición de los tornillos y el gráfico de malla" msgid "Timeout for screen black-out or power-off" msgstr "Tiempo hasta apagar u oscurecer la pantalla" diff --git a/ks_includes/locales/it/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/it/LC_MESSAGES/KlipperScreen.mo index 4460982974e7bc172152a36eb0b6e98bc426b001..f28dd77e8d7ef6590e75d7d1498ccc8f98995a7c 100644 GIT binary patch literal 18872 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 diff --git a/ks_includes/locales/it/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/it/LC_MESSAGES/KlipperScreen.po index 896c225c7..9ccc57f95 100644 --- a/ks_includes/locales/it/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/it/LC_MESSAGES/KlipperScreen.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-09 18:08-0300\n" -"PO-Revision-Date: 2024-04-24 20:07+0000\n" +"PO-Revision-Date: 2024-11-13 17:00+0000\n" "Last-Translator: Giadej \n" "Language-Team: Italian \n" @@ -12,7 +12,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.5.1-dev\n" +"X-Generator: Weblate 5.9-dev\n" #, python-format msgid "%s will be updated to version" @@ -78,7 +78,7 @@ msgid "Are you sure you wish to shutdown the system?" msgstr "Sei sicuro di voler spegnere il sistema?" msgid "Asks for confirmation before stopping" -msgstr "" +msgstr "Chiedi conferma prima di interrompere" msgid "Auto" msgstr "Automatico" @@ -135,10 +135,10 @@ msgid "Cannot connect to Moonraker" msgstr "Impossibile connettersi a Moonraker" msgid "Changes how the interface looks" -msgstr "" +msgstr "Cambia l'aspetto dell'interfaccia" msgid "Changes how the time remaining is calculated" -msgstr "" +msgstr "Cambia il metodo di calcolo del tempo residuo" msgid "Channel" msgstr "Canale" @@ -150,13 +150,13 @@ msgid "Checking for updates, please wait..." msgstr "Controllo aggiornamenti in corso, attendere..." msgid "Clear" -msgstr "Clear" +msgstr "Pulisci" msgid "Close" msgstr "Chiudi" msgid "Close messages after a timeout" -msgstr "" +msgstr "Chiudi i messaggi dopo il timeout" msgid "Complete" msgstr "Completo" @@ -168,14 +168,14 @@ msgid "Connected" msgstr "Connesso" msgid "Connecting" -msgstr "" +msgstr "Connessione" #, python-format msgid "Connecting to %s" msgstr "Connessione a %s" msgid "Connection failed" -msgstr "" +msgstr "Connessione fallita" msgid "Console" msgstr "Console" @@ -184,13 +184,13 @@ msgid "Cooldown" msgstr "Raffreddare" msgid "Couldn't add network" -msgstr "" +msgstr "Impossibile aggiungere la rete" msgid "Current" -msgstr "" +msgstr "Attuale" msgid "Current percentage and graph line" -msgstr "" +msgstr "Percentuale attuale e linea grafica" msgid "DPMS has failed to load and has been disabled" msgstr "DPMS non è stato caricato ed è stato disabilitato" @@ -211,7 +211,7 @@ msgid "Disable Motors" msgstr "Disabilita Motori" msgid "Disable for 12hs with am / pm" -msgstr "" +msgstr "Disattiva am/pm per formato 12 ore" msgid "Disconnect" msgstr "Sconnetti" @@ -221,7 +221,7 @@ msgstr "Distanza (mm)" #, python-format msgid "Do you want to forget or disconnect %s?" -msgstr "" +msgstr "Vuoi tralasciare o disconnettere %s?" #, python-format msgid "Do you want to recover %s?" @@ -234,7 +234,7 @@ msgid "Emergency Stop" msgstr "Stop di Emergenza" msgid "Enable screen power management" -msgstr "" +msgstr "Abilita la gestione energetica dello schermo" msgid "Error" msgstr "Errore" @@ -255,13 +255,13 @@ msgid "Error: Couldn't get a position to probe" msgstr "Errore: impossibile ottenere una posizione da sondare" msgid "Estimated Time" -msgstr "" +msgstr "Tempo stimato" msgid "Estimated Time Method" msgstr "Metodo Tempo Stimato" msgid "Example" -msgstr "" +msgstr "Esempio" msgid "Exclude Object" msgstr "Escludi Oggetto" @@ -282,10 +282,10 @@ msgid "Extrusion -" msgstr "Estrusione -" msgid "Failed to delete connection" -msgstr "" +msgstr "Cancellazione della connessione fallita" msgid "Failed to initialize" -msgstr "" +msgstr "Inizializzazione fallita" msgid "Failed, adjust position first" msgstr "Fallito, regola prima la posizione" @@ -294,7 +294,7 @@ msgid "Fan" msgstr "Ventola" msgid "Filament" -msgstr "" +msgstr "Filamento" msgid "Filament Used" msgstr "Filamento Usato" @@ -339,19 +339,19 @@ msgid "Font Size" msgstr "Dimensione Carattere" msgid "For mouse control or to verify touchscreen accuracy" -msgstr "" +msgstr "Per controllo mouse o verifica accuratezza touchscreen" msgid "Forget" -msgstr "" +msgstr "Tralascia" msgid "Full Update" msgstr "Aggiornamento Completo" msgid "Gcodes" -msgstr "" +msgstr "Gcode" msgid "Getting IP address" -msgstr "" +msgstr "Ottieni indirizzo IP" msgid "Go Back" msgstr "Torna indietro" @@ -405,7 +405,7 @@ msgid "Input Shaper" msgstr "Input Shaper" msgid "Insufficient privileges" -msgstr "" +msgstr "Privilegi insufficienti" msgid "Interface" msgstr "Interfaccia" @@ -416,13 +416,11 @@ msgstr "Non valido" msgid "Invalid password" msgstr "Password non valida" -#, fuzzy -#| msgid "Temperature" msgid "Invalid temperature" -msgstr "Temperatura" +msgstr "Temperatura non valida" msgid "Inversely affects the icon size" -msgstr "" +msgstr "Inverte le dimensioni dell'icona" msgid "Invert X" msgstr "Inverti X" @@ -438,10 +436,10 @@ msgstr "" "Potrebbero volerci più di 5 min. a seconda della potenza del riscaldatore." msgid "It's possible that the configuration is not correct" -msgstr "" +msgstr "E' possibile che la configurazione sia errata" msgid "Job Status" -msgstr "" +msgstr "Stato di avanzamento lavoro" msgid "Klipper Restart" msgstr "Riavvia Klipper" @@ -474,13 +472,13 @@ msgid "Large" msgstr "Grande" msgid "Last Duration" -msgstr "" +msgstr "Ultima durata" msgid "Last Used" msgstr "Ultimo Utilizzo" msgid "Layer Height" -msgstr "" +msgstr "Altezza Layer" msgid "Layer:" msgstr "Layer:" @@ -528,7 +526,7 @@ msgid "Max Velocity" msgstr "Velocità massima" msgid "Max:" -msgstr "" +msgstr "Massimo:" msgid "Maximum" msgstr "Massimo" @@ -546,7 +544,7 @@ msgid "Medium" msgstr "Medio" msgid "Memory" -msgstr "" +msgstr "Memoria" msgid "Menu" msgstr "Menù" @@ -555,7 +553,7 @@ msgid "Minimum Cruise Ratio" msgstr "Cruise Ratio Minimo" msgid "Minimum:" -msgstr "" +msgstr "Minimo:" msgid "Modified" msgstr "Modificato" @@ -579,13 +577,13 @@ msgid "Network" msgstr "Rete" msgid "Network connected" -msgstr "" +msgstr "Rete connessa" msgid "Network disconnected" -msgstr "" +msgstr "Rete disconnessa" msgid "Network not found" -msgstr "" +msgstr "Rete non trovata" msgid "Never" msgstr "Mai" @@ -597,7 +595,7 @@ msgid "No elegible macros:" msgstr "Nessuna macro elegibile:" msgid "No info available" -msgstr "" +msgstr "Informazioni non disponibili" msgid "No mesh has been loaded" msgstr "Nessuna besh_mesh caricata" @@ -606,7 +604,7 @@ msgid "No wireless interface has been found" msgstr "Nessura interfaccia wireless trovata" msgid "Not all screens support this" -msgstr "" +msgstr "Non tutti gli schermi lo supportano" msgid "Not working or not configured" msgstr "Non funzionante o non configurato" @@ -621,10 +619,10 @@ msgid "Notifications" msgstr "Notifiche" msgid "Nozzle diameter" -msgstr "" +msgstr "Diametro Ugello" msgid "Only for the move panel" -msgstr "" +msgstr "Solo per il pannello \"move\"" #, python-format msgid "Outdated by %d" @@ -638,10 +636,8 @@ msgstr[1] "I pacchetti verranno aggiornati" msgid "Part Fan" msgstr "Part Fan" -#, fuzzy -#| msgid "Password saved" msgid "Password" -msgstr "Password salvata" +msgstr "Password" msgid "Password saved" msgstr "Password salvata" @@ -662,7 +658,7 @@ msgid "Please recompile and flash the micro-controller." msgstr "Ricompila e flasha il micro-controller." msgid "Please wait" -msgstr "" +msgstr "Attendere prego" msgid "Power" msgstr "Power" @@ -677,7 +673,7 @@ msgid "Pressure Advance:" msgstr "Pressure Advance:" msgid "Pressure advance" -msgstr "" +msgstr "Pressure advance" msgid "Print" msgstr "Stampa" @@ -728,7 +724,7 @@ msgid "Refresh" msgstr "Aggiorna" msgid "Remove network" -msgstr "" +msgstr "Rimuovi rete" msgid "Rename/Move:" msgstr "Rinomina/Sposta:" @@ -758,7 +754,7 @@ msgid "Retrying" msgstr "Nuovo tentativo" msgid "Rotation invalid" -msgstr "" +msgstr "Rotazione non valida" msgid "Save" msgstr "Salva" @@ -789,7 +785,7 @@ msgid "Screws Adjust" msgstr "Screws Adjust" msgid "Screws not used:" -msgstr "" +msgstr "Viti non utilizzate:" msgid "Send" msgstr "Invia" @@ -810,10 +806,10 @@ msgid "Show Scrollbars Buttons" msgstr "Mostra Pulsanti Barre di Scorrimento" msgid "Show cursor" -msgstr "" +msgstr "Mostra cursore" msgid "Show only devices that are able to be set" -msgstr "" +msgstr "Mostra solo i dispositivi impostabili" msgid "Shutdown" msgstr "Spegnimento" @@ -831,7 +827,7 @@ msgid "Small" msgstr "Piccolo" msgid "Smooth time" -msgstr "" +msgstr "Smooth time" msgid "Speed (mm/s)" msgstr "Velocità (mm/s)" @@ -861,7 +857,7 @@ msgid "Starting update for" msgstr "Avvio aggiornamento per" msgid "Swaps buttons if they are on top of each other, affects other panels" -msgstr "" +msgstr "Scambia i pulsanti se sono sovrapposti, influisce sugli altri pannelli" msgid "System" msgstr "Sistema" @@ -873,7 +869,7 @@ msgid "System Shutdown" msgstr "Spegni Sistema" msgid "System:" -msgstr "" +msgstr "Sistema:" msgid "Temp (°C)" msgstr "Temperatura (°C)" @@ -882,22 +878,22 @@ msgid "Temperature" msgstr "Temperatura" msgid "Temperature too low to extrude" -msgstr "" +msgstr "Temperatura troppo bassa per estrudere" msgid "The system doesn't meet the minimum requirement" -msgstr "" +msgstr "Il sistema non soddisfa i requisiti minimi" msgid "This panel supports up-to 9 screws in a 3x3 Grid" -msgstr "" +msgstr "Questo pannello supporta fino a 9 viti con griglia 3x3" msgid "This will affect screw positions and mesh graph" -msgstr "" +msgstr "Questo influisce sulla posizione delle viti e sul grafico della mesh" msgid "Timeout for screen black-out or power-off" -msgstr "" +msgstr "Timeout per oscurare o spegnere lo schermo" msgid "Timeout for screen black-out or power-off during printing" -msgstr "" +msgstr "Timeout per oscurare o spegnere lo schermo durante la stampa" msgid "Total:" msgstr "Totale:" @@ -906,7 +902,7 @@ msgid "Unknown Heater" msgstr "Riscaldatore sconosciuto" msgid "Unknown security type" -msgstr "" +msgstr "Tipo di sicurezza sconosciuto" msgid "Unload" msgstr "Scarica" @@ -927,16 +923,16 @@ msgid "Updating" msgstr "Aggiornamento" msgid "Useful for un-responsive touchscreens" -msgstr "" +msgstr "Utile per i touchscreen poco reattivi" msgid "User" -msgstr "" +msgstr "Utente" msgid "WebRTC is not supported by the backend trying Stream" msgstr "WebRTC non è supportato dal backend che sta tentando lo stream" msgid "Working" -msgstr "" +msgstr "Lavoro" msgid "XY Move Speed (mm/s)" msgstr "Velocità movimento XY (mm/s)" @@ -966,11 +962,11 @@ msgstr[1] "Applica" msgid "day" msgid_plural "days" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "giorno" +msgstr[1] "giorni" msgid "g" -msgstr "" +msgstr "g" msgid "hour" msgid_plural "hours" @@ -1001,12 +997,12 @@ msgid "mm³/s" msgstr "mm³/s" msgid "s" -msgstr "" +msgstr "s" msgid "second" msgid_plural "seconds" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "secondo" +msgstr[1] "secondi" #~ msgid "Hide temp." #~ msgstr "Nascondi temp." diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo index 86fc2f8b126e9abe076a534a0dbe89c545c7927f..ecb615c21c29bc03b7cc7799a77c4975090061cc 100644 GIT binary patch literal 23334 zcmbW837k~bnf9-{;;wOx(d&YM(9P!BN{}65H(=AsGD%Ez*KNAAyQ-`OXeXl}E-@fR zf<|#cRI-_g2(;|zIDT23OqIz@7M&!E9=pOJO zumm0n{wsJe_;c`Z@VDRr;9o$EdkZ`R-0y>K{WHNssZRt)gEPTV;4*L|xCtB%mVNzA zuz~uy5G^{|zyrY>z@xyMz>~o>AX^1r07b`hpw96fQ2YG=)Vx=G`!B&E)ZYL#{w+}F zI0Po}7#szvJ`xlk#(`RIBB*(@Ku8PPK+&HC4*?$nj|De@=YZQm@!@5UKLbyv{%cTl z9YW$Xx)anncY~t;Sy1!84(c2~ z1jV;sf{+mW3DkbaBP7Z5bZ{6r3KT!vK<$?SHE$Wnl;Czy=lVRTabNNHbx{2K8K`yM z0X1(}7z8JP7lJxRGpP19Q2g%z)t&*xhozv}S9rV=6u<8Wb?!b;^nVMKzWo{$ov(vB z$DhEX!2`~8`y3By-LpXPXA~&<$AaS1MWFceVNm;C;oIkflEcSAjn9Bur|9t}a6I)p zK&`VE)cogty#yXd{rjNK_ZyFY1VzW2p!o8Rub*(1JIAS@);k;2yz_j0oX1N*&A%Mf zxu=2qgR?=&^Gfg}@S`9i2nwLix6Ze31a*#`pw|CKQ0M$MC_8@{)VgnY{4bCDpAC;_ zKOEG#KLTpM8$t2=4p8=ZKgf}SEuiG}Jy3e{8mRRTJqOzdPXo121d6|DQ1UB)qVHx< zbgu@*kNd#`!AC%i-{jk$@aobMR2N{*j>eKM6bl3_&6tQ2O#s zUw;|YzOR6?44* z@>GJK@g9lMx4jv5N25R1&pw71m)Vwc)vX7TQ zjsF#>{eS22ZBTR{J>0dQ32NLpP;^}k9s*7Wbza7-R_kddW zYrg*npw{_?um8^Do1o-+$OzYeEU5KQ0k!UM-+lq8b58K}si5?(8Pq=WL7giFivAnG zL&4>~{SHukSr3XI8$hl11gLXu0X6Sypw@W-)VO~Ggp^-c%1&)FVF z`SuGy(bWV>F3q6UOM)yBWI@ea4~nkGK+*F>P<(n46g}HP@nNrT|CYxWL5=?rC_Q?` zxBnH?JOy{reK4r=od!+?$AFqw1jXl1g3`NHp!R(L90EQD9u9sLlpomzjs|}SO1_7U za`h%q=eZWV1Y8Gd{qKNU|6f4S@pIq)CMbIMYjFFX3~ImOpyrJS#g`^X#ikAbqwCqU8vEGT+Qpw9a;sQupnweCCMVc@}yuKgHL`-!OhK=J1(zU2RY28Q5&gExa88tdZsBj7RAcY~t$ z1yFqXDX94I7f}10G|u^_)4?g!$AaQ>5!C!A!CBz5U^_TuJiY?#0q205z*g{2p!heF zuNLs{K%M{Fp#0PKK%M&!;HBW17dSdU2I?HkK*@0}D7wA~egJ$Dlzu$#>#u@GQ2#49 z9X#klM`trA|MxLp|65SwR)adv{h-eGT~P8ki9^83;4JVm@JdkUT?2~W8^D?1S3#}w z7f|C4yx7q-2|SVd)u7^I4=6po4b=S2pw@c^L^XnvZ+{z{Nc~8N5`S7ijlUYyIV137 z@D@;VdI&^R!Cvq<@ZZ5x!2O$u1>k9**8doIB)AHcUf&N+1D^p!|3NTa{5sC#LU1zm zM?lHzRZ#pJ%OQnxK+Wp`MaK=G_FWH(j%}di^L0?;UiSDJ2&;lWgNQn4oZ#r}0LAym zLDMTxbUzE~+`k7Uk0U?q{Mu!p_%j=nUCjrzPXd%Zra{qlBdB#B26gT)fwI$o2E~t; zK+*jgcs+Ok%-1?a@FehNQ1jP=XMvl1{Tra>e-{+JuYl)(fAsZ}E_dq=2gQfU;0fS- zQ1u>p-pZ0I2bggOcNOp!ob_Q1jjbrEf!KI{Hok z8>vqO#m6)VtAhtYTt)CxPa#BBj^fvI;iy@ z14Y-1;1KW)P;|WoUI3nq@*N7!1}A{?!C~M%py=KUo&ml94h3Ha&jpWbcJ)g@@#h-w zY_J>Dyw89mzzv}I@l8;A@e5yn6Vy3QYzcz7U;}t6cq6ED-4E(KTfvdw3!v8fD|iHW z)@&!I(V+C_a!~rT0Mxuyp!RzlJPO?D@f)D%`963i_#Ylmz*tnj2-GuvC8@LUd~{tH3zy#qwGf)$|F`v$1-FZucbSGsji1jo=m(&I-# z&A$^|3_byB{_(Bu{O5v4Q6CR#-^t){U@Is-M!vq><7dHRY5zPZz1jgD1O5&?9DEzp z{zK+Dzi=sdFZCp-ecl2^&yY5^&u~!tUJ9!H3Q&F^1+r9d6Zlc^MUbh%XpC$=xDph9 zUIJ0s;Lxkx{;gmG^^b$&z}4V!;4@$fd=Vt11(&gi+LwZ&|I^?Hzz4v&;AT+r-){jl zfTw~Qw;sd=22X&}r{9C3|I~#pE}sWVf3F2~-ZkLy;6vcW;8URZ`Wuf2Epl=VK~yqW z44wn_fd_&=0uKRy0v-nb%Htov^QgZC?g#4gSqHZM?|EKH5smu%k@9(p&Z5sH4(vO@ z_kMnnkMVpa&u4=F$9l0n@E-phgU)AMrei@($$d6n`!WeP<)5P#PDhyUyGZE!PXBc+RSIwk&G$ip*~lPQ0pG*k3Bf_=UK zhM+#Dg7Vu*%0E%0(@#(elqHm-GAtD2wjkHN2b z81MTR^1PUGF6G}SZ&H3ti9dhO!#60qDR=nB{|2{GKFAuwz$1LSU@GNF%Hx!C=szCR z=V1rID`2C4-sUlef9IirITOK=VEp+i5Ar+u{0rqpd*XcuSoF`QF}~A3KL)-=xrDZ5 z;14Lr^86j}PRetX&r#yf5c&?Md?juGFQ)!i@K2QA`u0b_4^!s&`ZvLwDPQ;XpL;w3 z{50iXDQ8g*qTEk8fTGWTP-fec^Mlv%d=mTJ1s(;y<@^2toJ_gW*U$0zNsq@cb_CC7 z__{#9dFb<~gCGy?pvc}P)?qFm(Xs&5lzEcL6w(cmaG@>xM?puA35 zK#4y$^6*Pv84DgtIgxU7&6;QM+(bE?_P?c!ro^95@vx6_H{~b3aR@kq@h|y$8Em9} zK4mV?i+uZV>NoKG3CbAC%apy8`&6gz5U_*t0Og02|D+s9`-dp2d7ef&i06YreJ;0e z7ejk^K8(JTDKmNgxcY|X!=)EG>fx}Z6n zohgJ`GK?F`qC-a3&cH+DB&&_4pBYJZkU8yD7Hy4GynPQlSiZGe6=cS3X ztracn=q@HBBR$i8ZPZcF#G3J%7!S@B)8Vw9D7QFDcl3ty91Q~or}AB*vLlh^pe&rq zbF@@?(1rcjWGbI%?~cNrOd*rY4@Q9>n2XvoFjb7s_vQ;x&wGr`cNGiC%+hrI==^p0 zurrejJ0zD}kBI>Vpot|pQ8txc984+}GWONbk?2mfBP_&1TSG^8CLe|AOd-{o>ae+a z*OAFa@Mc*dCuYt`hjSCfyq}Zr$Yl`eWVEX}S`xXZmMGs9OwJU#f+>|9Do@EuqllT3 zfaM7wJ**H)1rqI-6(+T?RJZ$p8FBf)>%Z8dom&_k2>Sfe5Egw4m%T=nT^h8u(v6hOt8P+Y zle;dMQq1KdxH)xh%e=5Ff%4dFt=gSQB*R2HY0d2s3gGoP8BCSNOvTPC5Kc|ypfZ!| zo#;El>5xIi>wb&rex)krjUCq|4^`+26FuSRFx#VEFFHLIB=vB3PtS;8YQ0%Adoh~A z8j$2?zy)@z9|uY3QqH=jbtkgxkLRQpWcr(#WbujG30pWpeI2 zWY2;mpXeyydBS`a*7`0K_uaY*xn50zqn%NqqsvXpyLnAvMJhT_g8lO;xlRqoW41@Z zv^<((&fENReKl-}3SF6GFl|{vS_C?OH^+P()j}>2HYebgJ!8Ew=Ac0KtXL3^ta)w- zrdL!TX(EozNl~NPht(8P821g4ZybeUU0ci-s%O9h1DcvB$PvowL%YmHDO0@L*F%u;6a zEq}*Th7d8&$VZQQGHj`X7Vu_LEclP+q&j-JgXu-$>s1z9 zgBcx}WRwqPcukl!SB93u?1LGZaB`yKx?pCMTHIA=3TCE|gTC;0={zAJOr^uNs3+SP z%*+sj^%W{k+QR}53mtk`L=EQZD-COdSyO{qkRP^np|`=TSU6&lg{LSdzvS8r5t=r4 z)>Jt>bN|u-Y^sU=Y!R+>C9<%1RytqoBoL$!oEBLE|M6h7BY@6ChqhV53dtD5Y$Bh> ztyCKbVXTxW5Sle8$`!%|@x#LSVNo!vU`a*+KaC_1S^-}jUJ&-A(!~NkGZ_(oOx&^z zqGMNt40Fy}IaOg8K{%7orxazG>q02(u-wE2LHxT54LH1xLhzAHJ0Tv*^1&6|sVr1h zG$pRf9ajAd>RQ`Dj*uye5yU-cjpQa8>qf)@y3z;*iGny{o&p7PiW#qJxthxWg627s zrd~6BR`aBmX|vl#Up2d~9!jmdQpqI#O8zccQ)vpCqhy}1P87B|)srevAtKlpS|x32M)`1H7N4X- z9H|;^o6VEX&fIVVeyJrvmLNiNg$@*qv3boh=iPA-$U@DGxe50D$NUdN~UZa8pd4P3tz$9a7wP2!u(ssmY~Ho zvT`O#9)#R0hiZylp*5n@Erb{Q3hU$5>;y(Q+s9asHFM*ZI_-)ZrKO$dR+0s<7`~SV zvoj&Cc(Lhsk9e7HQd=tBnF$k1@YjlAY9Y<&ss?O@a7d+nDdD*rU&It|ywy>DGqz3O z&77yplTK%|hzoN{|-p3Edl94r||3@Msy5uSD1>mtM>+&cV8g!Q50jAIx>howA9ZEKbm@uCqI#n}BFd zA&>?iJGlEa#uJnc26JTx?%OhFC9i5wWRSj2N-j~JGoYcV+LEXYQQ~Xqugp%N%GGQ= zTerp>q1){h&NI2VDstk1#3GzyH!f8=btb8-_RK6%VDe6Bo@GUi65-M=xtn|?_3etf zvyDT7D~n`_Gq`T$dVT)invgAd!*6vNSl}_7naCw8m3f)Y0+mjjs5rnAOz8qm`e|=I zt&sxUXqj3Qea>luMNF(UBEi9%dz4eFK0;4=F;|e9mU-C-$*ZB)eTyBfBp;S@rF=M> zhkgY55;swD_q@mfa;`>|iPn~M-~JBUqv0_Kbs!Brb8nHBw_?0u+7-}*s zm;1~k;05!@36&SB3IU^%W zMoUs1QQk$$1UhILFy0%jAdzLHyIKa89?k1!Fw+g1f_Xi7iNF}C+}=Qd9nVUKYp zqh|k1%+pPY8zmmv$J{o2g1f%+IwH#J%GDDgN#`qE#K}e17jem!6Svtr1o^ty>E>}j z4Xk*Hd1Lf~;Ft)1u$dPW@1WOm(8QrK#-c6c8R$!3;FP7~Jq;Fg`&AH~?J*T}J zH`<^^9Ijn@8h8Wq{zrz%qHe=3x0DgJxeWfQ^mS>ylyKS^#MOL+5)!h*LT@&rRe=e} zIr9zuJ;j-8wb@zgRoSpD6WW#2XW9nZl-vb(ZRaYc8*m<3lwMb}nw&kaQMq7#)ZW@Q zMYnv}m=A6)s7NmDumg(={bg-lAr~cjg844w1q&92azA06*3(#5Uldl}a0H768NaCi z@U~QUfsyXbS5rW6AY;6lH%TiirA49AIYye3-4Z5f6Pt4R&x z!R~?`YMe_rB{pjuc1`_wOSS`_a|b;={2R@ld_A`Xcy22-1ew7xIZ%Yj=%rf2tYpL0 z?!97D*jgkJCnX+U7ehu2X^oUmG_>Rwr;-hmi;MFOZJDNU$lN&%t@tC|LmMRIrf}i3 zNv#bna~h^j3TMt~YMC{1(VW@ShA4GyXv-zidEU@)R|%(I)yz9cGUV{GX)TjxHD5ky z>Qr7?&igP!UDDgoh7hX+UDj17Wb;jUmT zzK~j9d3kw7X-8>CFue2(P0ZNCu-)a`OPiUnqr671oEw&fYG9;R*jL&amTxKTD=%m4 z=JL%!X>ECxX0x`Y++6Alsj@U%ZD*aWY_gK4UFDT@(7dnwDfZk_+Ev;yij|oGedSe} zwT}U-Xkgv)>hg;6T_G#3uvwd#!RqDJei4qO!|W-q^zXRYot^iJP=>LMjvAC6X1P6j zbhCrfV=TDK=(omFUsF)p!02rZG?u^}+bAfl6J;EserHa<10Jo`$yb#6n9XiG>NgqC z6fzVt%6B+YAl1K3FYO9NPHAuXHoDk}+UC-piGwWro@*Fqp|+2ipMmAK8jtrP8z@9X z60SQQ$1bmmIUh1`A1C*M6SsG9xHU-Jb6djsG^Fh+^XFUddnMM9wn)Q}wv(F}x!HKN z6B1UI*PxjamMNP?qayJZbySJK8X1P=J6TZL#QM@qv?8AOeh#VS`Wv?VM$Fsqd-JKXFz))KfJ&l*FJK7cm)Q=WPat928lJasUeGdMZbZt3j0d@NN zwCr38UTb>W1~8X7JJF5O7FOO@c`$Y3z(`p(BeUFG?UVuULWVL*E$@^_{sV!SGoiV< zs;N@#cqcX_t-L|MNZ3hsNOYUcEA&P4+2GzAb zEOQM?>!EtUk>m(uTD2YWaxxK4Fz6gL%4(Nu)rZVJ_ueRZnS0YAk)%lJl$z&V*zz=A_W6F(g^gRl>cl^> zl0nA(_i>WmD#UF%d;XN%5(UC2&ZdJCiQxlY?0&v3Y<-OgFX2EUpUS`etEBUVs* z3v4da50_Bb5XseqC~4KG_$Xqw`Q%cc-eti7IVUND@!MI5*E+dn8BC=rr@2qd$FA42 z$Rdjf)sfknC^+DJpEZ3Jo$!6o7!k77|J$kg$rYJ+N!p5ajhI-!vE{oJuXpL9>L}ESeY>)-eH@dZ%9F+9Wrr78Wn4mH!*n%^`n?so51tFCuY_wlU701_B zl*ZPP=;dssy0H&8d!^TQof|-f}XRW)@lNy7PAu4ig zv2*P7Qf17iSZ2qd%k*=pyQFCUAIsEaleUDsq9e}n!0FeZlr)8d`g&WjZV9cq9VXpI zA(`1ub+2?fRu^-oc5=?(eWy6-l@#C(*{Y|jvSQ!Ucm^pTyDNVxf$kx7lMp^_?VHkl?DrVQWXW4*h^HZ zUXkQm`=ltG!+FuZLFd^3W0Wnn!`Ox*oBEoQsnM>+u(Xl&Hgh!Xj2F@PO3W0yOqxu8 zy1FZDA%`db3rdeOfq8CtD-W`9eqNTh%l%|pdK3xWZVbV^#TSzyr{C#p(Y!r2dYh&yS#cMy zXJkn%;*-b9rK?8D?Cf+A|5e)NYL3`}f0_1J)S zck&3;_`V|)N9_#GJJCRNaUqJ4vH@fFor>Eg8+McedpC-nBi$NTD05m-zB`!F01I?? zbBgRO+-qXU54)_fjV1fok0l?XD(}3_ye@50eI;cZwJ|YE-qh65H#i@T1@J)9!Dh-5 zLcLZb5!pcdawEW}&9x1-kkRRadUdGlSx`UUH!d8kb#-OEk(CRDi`rf{V1-W`EwOSg!=e6->KYkBrLJa*!A%wM# zqjIvA==*b_Cn%RoMeYz6Ofs}$zRz$7;@lbA$8YTn zk~p~~p@VBVW8IBJE4pmW(gF8wL4FKT>8KX1%#kn-vX&by3e!-ACGgZ(U8aZH>v6zrIzwsiabw4%WiSUrxSXEQ(0UFS&4UW zhHFQ)Q}+;ssx8$fC&&6XO;TOWtNST_z)$l~9A6T6_k>`iExUEE)4M1MvtPuJAhfQW z-1f>(2&E@W+jWNzN_T5MLwx*|)yV+dqR?cLULC7~bX1{t1$#8h z8uNj*O(cEhB1AGLVW6^LBIF<$0FAXbO{VC4UXzU;cw(nV)aH<#j=S43Tw@F(*kTrK zjKKp1r3V?S@L=6R>9d?kxs4nQjI;Ehyhd(sN9mb(bmi(@*T6gkP; zr7`yEg_tAnACse~3Kt%vQv>$IXVqH{rQiE_d3KBP8uIr5iv2I^bdA~pkE$gYihM>RJLOAR?WanSG$rjd0^-(SPJmu4vS!~;gw&wCa zoHOkiA!c!ExFPqW1^mMx8=G5m!{m0V4n{=F<;8s*!};f(Q0_Y)f=Kz$tu$E%f%_3J zW5;LbH06fyRpncyi4{F%-WF8CxkwgpYQybI+>$)x$Ez>XB@q_H znBc6`WxhrcMA!RQNY`~hNl%=JnF&_+bS7LITYaX&yH(Q$iNU{;-zH|DAoAPFkJiZD zTez~5g>;dq8DlM-(5dXs8?)1F1-tc10y}n?=TXY%jwO!j{iD1RuUhW4NToozTNx)| zS-gX>@og2(`M4gG9vj#%y+EIsFV!KZhLOyFMvRn$Fh4D+`gG;pRE-&;$X*Duk<(Ae zRD+SeS%2oDG?2wCX21K7E;Yl%SR2SO>wlebX3Rbupt9=w8@^WDMYrL-RzV!gom$wP z$Yo}bD4t5kSe=6yBaAuaTRr<(#q}x>z%7?Nn&KKWl+`;iASgnT>A(N!$9|mAq7tKQ z$*E;^3JzzYR+rlQ#8hd3Tn`%Q5-CmP1&GUX%-@^+aW+S=b}uh))H1sN$vv-BhN!c} z#$WTs(6+O4%N_P9VXEX8avaj69Yu`*-nhnDt?5#yAz5}ksT*0uC~k@L$TMU)gDb8m%wDI=tkYKP15lmY%Z%Y zE!=1(RQ=V;rXf}>=58IXMG-}s$C-^dlfBLndv0Y|D3p_s-p}1(7e-{K901>98sPIl z{l!g`)*mzRcS{(aG*wI4Q^_2|GmXO;iNBTr%CYvrI`?)%r?iXU=!z1` zgH_Ha?o!v3Y9!#N)!0zwgXjFZ~HkNjg@7tYTnvYbpBtv|UmfNUf z)8I3mK}N{_?6)LFxr3Q6aKGSk195s8k5Kk+F46)nMs>*MwkyiYE2pW(xQ})H&RDLA4hp8br z-QP@woH5wz6ldj?aXy;X-61$00h^^|nh(SG*t>W}ehz}AocIir5F-Y?AJ@{S_f8f= zcx%X1-G3@CPNWsq$ZF$RHV)x?9+EOm!D=$oAunMY2!NH+j-nqQ2=7 z@xuHibm(5j+db2d{#7KQTY@Njxm~;dMe0b0*^|(Mjr3d9nDezEdi1FM`~?vNB;nK2S68 zLG+G1T7JlGa}pAp@vcL%K@fNsIEAE?*II(9*X{J`T=ufb(kHv2^Ue=z+3J*S8^lzu zS$l99Yc)OIirLkE&Z`Jjll5(6q$rV5psg69Ba8*1v!*u=ulYynvu$;v3XlJ@=j8iPH_s-Zj}>n`(}wCHX-R3o;wfYcP2X z{vHMf?*01yQ+)hO=_HU|Eu9ZC;h(| ztP?@+7UPh`fJzQ0-+7-Ml^YON`Vdr0qT;)_?&C|HpQKqY3Ng>YN7K)154~sA8+#Wb zq{Sv|`6_p7ti0P<2Ok~RG{!H^cni{)uA~uXYbX#703PZD68JVd925_*XF5^Px|8YvQi{H@NgrGEl-LcS=NcucpUKa{OxPiAsV*G*ZdqkV}8oM4} zDP`gI-so~I#ZmN6{BX27oq3n-QL9Doxi<^-8?z`>vIGYe#JH^XzoIO{q-0L)2#dW# z7|^d4&cI^e3J-(=S9j`B^U6nmT8Bl|ygf!c*1&m%mVSQ( z%pc(qeTgLcTLH4Xx@G8Np~@-tu&m5eYAf_hN`M;4UkDFeO&(Bb6LG8ZlY!gE_oy9z f%@=t_jQk0)TKFSk+91$=PH@UvS7oKz-r#=#rk&Dq delta 6394 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 diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po index 10f65d358..ab671e6a4 100644 --- a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-09 18:08-0300\n" -"PO-Revision-Date: 2024-07-05 19:09+0000\n" -"Last-Translator: Артем \n" +"PO-Revision-Date: 2024-11-13 17:00+0000\n" +"Last-Translator: Владимир Чернояров \n" "Language-Team: Russian \n" "Language: ru\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 5.7-dev\n" +"X-Generator: Weblate 5.9-dev\n" "X-Poedit-Flags-xgettext: --add-comments\n" #, python-format @@ -25,7 +25,7 @@ msgid "%s will be updated to version" msgstr "%s будет обновлен до версии" msgid "(default)" -msgstr "(стандартный)" +msgstr "(по умолчанию)" msgid "24 Hour Time" msgstr "24-x часовой формат" @@ -43,7 +43,7 @@ msgid "Acceleration:" msgstr "Ускорение:" msgid "Accept" -msgstr "Применить" +msgstr "Подтвердить" msgid "Add profile" msgstr "Добавить профиль" @@ -108,7 +108,7 @@ msgid "Bed Mesh" msgstr "Сетка стола" msgid "Both" -msgstr "" +msgstr "Оба" msgid "Calibrate" msgstr "Калибровка" @@ -144,9 +144,8 @@ msgstr "Не удается подключиться к Moonraker" msgid "Changes how the interface looks" msgstr "Изменение внешнего вида интерфейса" -#, fuzzy msgid "Changes how the time remaining is calculated" -msgstr "Редактировать расчет оставшегося времени" +msgstr "Изменить расчет оставшегося времени" msgid "Channel" msgstr "Канал" @@ -164,7 +163,7 @@ msgid "Close" msgstr "Закрыть" msgid "Close messages after a timeout" -msgstr "" +msgstr "Закрыть сообщения по истечении времени" msgid "Complete" msgstr "Готово" @@ -243,7 +242,7 @@ msgid "Emergency Stop" msgstr "Аварийная остановка" msgid "Enable screen power management" -msgstr "" +msgstr "Включить управление питанием дисплея" msgid "Error" msgstr "Ошибка" @@ -253,16 +252,16 @@ msgid "Error clearing active spool" msgstr "Ошибка при очистке активной катушки" msgid "Error getting active spool" -msgstr "" +msgstr "Ошибка при получении активной катушки" msgid "Error setting active spool" -msgstr "" +msgstr "Ошибка при установке активной катушки" msgid "Error trying to fetch spools" -msgstr "" +msgstr "Ошибка при попытке получить катушки" msgid "Error: Couldn't get a position to probe" -msgstr "" +msgstr "Ошибка: Невозможно получить позицию зонда" msgid "Estimated Time" msgstr "Расчетное время" @@ -283,7 +282,7 @@ msgid "Extrude" msgstr "Заправить" msgid "Extruders" -msgstr "" +msgstr "Экструдеры" msgid "Extrusion +" msgstr "Поток +" @@ -292,10 +291,10 @@ msgid "Extrusion -" msgstr "Поток -" msgid "Failed to delete connection" -msgstr "" +msgstr "Не удалось удалить соединение" msgid "Failed to initialize" -msgstr "" +msgstr "Не удалось инициализировать" msgid "Failed, adjust position first" msgstr "Ошибка. Сначала измените положение" @@ -349,7 +348,7 @@ msgid "Font Size" msgstr "Размер шрифта" msgid "For mouse control or to verify touchscreen accuracy" -msgstr "" +msgstr "Для управления мышью или проверки точности сенсорного экрана" msgid "Forget" msgstr "Забыть" @@ -412,10 +411,10 @@ msgid "Initiate a PID calibration for:" msgstr "Запустить калибровку ПИД-регулятора для:" msgid "Input Shaper" -msgstr "" +msgstr "Входной шейпер" msgid "Insufficient privileges" -msgstr "" +msgstr "Недостаточно прав" msgid "Interface" msgstr "Интерфейс" @@ -426,10 +425,8 @@ msgstr "Неверный" msgid "Invalid password" msgstr "Неверный пароль" -#, fuzzy -#| msgid "Temperature" msgid "Invalid temperature" -msgstr "Tемпература" +msgstr "Недопустимая температура" msgid "Inversely affects the icon size" msgstr "" @@ -447,10 +444,10 @@ msgid "It may take more than 5 minutes depending on the heater power." msgstr "В зависимости от мощности нагревателя это может занять более 5 минут." msgid "It's possible that the configuration is not correct" -msgstr "" +msgstr "Возможно текущая конфигурация некорректна" msgid "Job Status" -msgstr "" +msgstr "Статус печати" msgid "Klipper Restart" msgstr "Klipper Рестарт" @@ -482,13 +479,13 @@ msgid "Large" msgstr "Большой" msgid "Last Duration" -msgstr "" +msgstr "Продолжительность" msgid "Last Used" msgstr "Последнее использование" msgid "Layer Height" -msgstr "" +msgstr "Высота слоя" msgid "Layer:" msgstr "Слой:" @@ -509,7 +506,7 @@ msgid "Loading..." msgstr "Загрузка..." msgid "Lost Connection to Moonraker" -msgstr "" +msgstr "Потеряно соединение с Moonraker" msgid "Lower Nozzle" msgstr "Поднять стол" @@ -536,7 +533,7 @@ msgid "Max Velocity" msgstr "Максимальная скорость" msgid "Max:" -msgstr "" +msgstr "Максимум:" msgid "Maximum" msgstr "Максимум" @@ -560,10 +557,10 @@ msgid "Menu" msgstr "Меню" msgid "Minimum Cruise Ratio" -msgstr "" +msgstr "Минимальный коэффициент крейсерской скорости" msgid "Minimum:" -msgstr "" +msgstr "Минимум:" msgid "Modified" msgstr "Изменено" @@ -605,13 +602,13 @@ msgid "No elegible macros:" msgstr "Нет понятных макросов:" msgid "No info available" -msgstr "" +msgstr "Нет доступной информации" msgid "No mesh has been loaded" msgstr "Сетка стола не загружена" msgid "No wireless interface has been found" -msgstr "Сетевые интерфейсы не обнаружены" +msgstr "Не обнаружен беспроводной интерфейс" msgid "Not all screens support this" msgstr "Не все экраны поддерживают это" @@ -632,7 +629,7 @@ msgid "Nozzle diameter" msgstr "Диаметр сопла" msgid "Only for the move panel" -msgstr "" +msgstr "Только для перемещения панели" #, python-format msgid "Outdated by %d" @@ -680,13 +677,13 @@ msgid "Power On Printer" msgstr "Включить принтер" msgid "Pressure Advance" -msgstr "" +msgstr "Опережение давления" msgid "Pressure Advance:" -msgstr "" +msgstr "Опережение давления:" msgid "Pressure advance" -msgstr "" +msgstr "Опережения давления" msgid "Print" msgstr "Печать" @@ -737,7 +734,7 @@ msgid "Refresh" msgstr "Обновить" msgid "Remove network" -msgstr "" +msgstr "Удалить сеть" msgid "Rename/Move:" msgstr "Переименовать/переместить:" @@ -767,7 +764,7 @@ msgid "Retrying" msgstr "Повторная попытка" msgid "Rotation invalid" -msgstr "" +msgstr "Вращение невозможно" msgid "Save" msgstr "Сохранить" @@ -798,7 +795,7 @@ msgid "Screws Adjust" msgstr "Настроить винты" msgid "Screws not used:" -msgstr "" +msgstr "Регулировочные винты не используются:" msgid "Send" msgstr "Отправить" @@ -819,10 +816,10 @@ msgid "Show Scrollbars Buttons" msgstr "Показать полосу прокрутки" msgid "Show cursor" -msgstr "" +msgstr "Показать курсор" msgid "Show only devices that are able to be set" -msgstr "" +msgstr "Показать только те устройства, которые можно установить" msgid "Shutdown" msgstr "Выключить" @@ -871,6 +868,8 @@ msgstr "Запуск обновления для" msgid "Swaps buttons if they are on top of each other, affects other panels" msgstr "" +"Меняет местами кнопки, если они находятся друг над другом. Влияет на другие " +"панели" msgid "System" msgstr "Система" @@ -882,7 +881,7 @@ msgid "System Shutdown" msgstr "Выключить" msgid "System:" -msgstr "" +msgstr "Система:" msgid "Temp (°C)" msgstr "Температура (°С)" @@ -891,22 +890,22 @@ msgid "Temperature" msgstr "Tемпература" msgid "Temperature too low to extrude" -msgstr "" +msgstr "Слишком низкая температура для выдавливания" msgid "The system doesn't meet the minimum requirement" -msgstr "" +msgstr "Система не соответствует минимальным требованиям" msgid "This panel supports up-to 9 screws in a 3x3 Grid" -msgstr "" +msgstr "Эта панель поддерживает до 9 винтов в сетке 3x3." msgid "This will affect screw positions and mesh graph" -msgstr "" +msgstr "Это повлияет на положение винтов и график сетки" msgid "Timeout for screen black-out or power-off" -msgstr "" +msgstr "Время отключения экрана" msgid "Timeout for screen black-out or power-off during printing" -msgstr "" +msgstr "Время отключения экрана во время печати" msgid "Total:" msgstr "Итого:" @@ -915,7 +914,7 @@ msgid "Unknown Heater" msgstr "Неизвестный нагреватель" msgid "Unknown security type" -msgstr "" +msgstr "Неизвестный тип шифрования" msgid "Unload" msgstr "Выгрузить" @@ -936,17 +935,17 @@ msgid "Updating" msgstr "Обновление" msgid "Useful for un-responsive touchscreens" -msgstr "" +msgstr "Полезно для неотзывчивых сенсорных экранов" msgid "User" -msgstr "" +msgstr "Пользователь" msgid "WebRTC is not supported by the backend trying Stream" msgstr "" "Отсутствует поддержка WebRTC у бэкенда, который пытается передать поток" msgid "Working" -msgstr "" +msgstr "Печатает" msgid "XY Move Speed (mm/s)" msgstr "Скорость перемещения по осям XY (мм/с)" @@ -977,9 +976,9 @@ msgstr[2] "изменений" msgid "day" msgid_plural "days" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "день" +msgstr[1] "дней" +msgstr[2] "дней" msgid "g" msgstr "" @@ -1019,9 +1018,9 @@ msgstr "" msgid "second" msgid_plural "seconds" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "секунда" +msgstr[1] "секунды" +msgstr[2] "секунд" #~ msgid "Hide temp." #~ msgstr "Скрыть температуру." diff --git a/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.mo index 0e15644c5a42b69076b5d93a1e2b6b191b80d3d7..4959838f54c6003c0d4210c1b9eb313407bb630e 100644 GIT binary patch literal 17798 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 delta 6126 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 XIm6|zo9{-Aicc^6b9gHp-bU^JV^KIY diff --git a/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.po index 928af62cd..6cc57c9df 100644 --- a/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-09 18:08-0300\n" -"PO-Revision-Date: 2024-10-28 08:38+0000\n" -"Last-Translator: China-Mr-Hou \n" +"PO-Revision-Date: 2024-11-15 16:00+0000\n" +"Last-Translator: Kayz C \n" "Language-Team: Chinese (Traditional Han script) \n" "Language: zh_TW\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.8.2-dev\n" +"X-Generator: Weblate 5.9-dev\n" #, python-format msgid "%s will be updated to version" @@ -36,10 +36,10 @@ msgid "ADXL Not Configured" msgstr "未設定ADXL" msgid "Abort" -msgstr "取消" +msgstr "中止" msgid "Acceleration:" -msgstr "加速度" +msgstr "加速度:" msgid "Accept" msgstr "接受" @@ -51,15 +51,15 @@ msgid "All" msgstr "全部" msgid "Apply" -msgstr "應用" +msgstr "套用" #, python-format msgid "Apply %s%.3f offset to Endstop?" -msgstr "將 %s%.3f 偏移量應用於限位?" +msgstr "將 %s%.3f 偏移套用於限位?" #, python-format msgid "Apply %s%.3f offset to Probe?" -msgstr "將 %s%.3f 偏移量應用於探針?" +msgstr "將 %s%.3f 偏移套用於探針?" msgid "Archived" msgstr "歸檔" @@ -98,7 +98,7 @@ msgid "Auto-open Extrude On Pause" msgstr "暫停時自動打開擠出" msgid "Auto-scroll" -msgstr "自動滾屏" +msgstr "自動捲動" msgid "Bed Level" msgstr "熱床調平" @@ -140,7 +140,7 @@ msgid "Cannot connect to Moonraker" msgstr "无法连接到Moonraker" msgid "Changes how the interface looks" -msgstr "改变界面外观" +msgstr "變更介面外觀" msgid "Changes how the time remaining is calculated" msgstr "更改剩餘時間的計算方式" @@ -173,14 +173,14 @@ msgid "Connected" msgstr "已連線" msgid "Connecting" -msgstr "" +msgstr "連接中" #, python-format msgid "Connecting to %s" msgstr "連線到 %s" msgid "Connection failed" -msgstr "" +msgstr "連接失敗" msgid "Console" msgstr "控制台" @@ -189,10 +189,10 @@ msgid "Cooldown" msgstr "冷卻" msgid "Couldn't add network" -msgstr "" +msgstr "無法新增網路" msgid "Current" -msgstr "" +msgstr "目前" msgid "Current percentage and graph line" msgstr "當前百分比和折線圖" @@ -226,7 +226,7 @@ msgstr "擠出長度(mm)" #, python-format msgid "Do you want to forget or disconnect %s?" -msgstr "" +msgstr "您想忘記或斷開%s嗎?" #, python-format msgid "Do you want to recover %s?" @@ -245,28 +245,28 @@ msgid "Error" msgstr "錯誤" msgid "Error clearing active spool" -msgstr "" +msgstr "清除使用中的線盤時發生錯誤" msgid "Error getting active spool" -msgstr "" +msgstr "取得使用中的線盤時發生錯誤" msgid "Error setting active spool" -msgstr "" +msgstr "設定使用中的線盤時發生錯誤" msgid "Error trying to fetch spools" -msgstr "" +msgstr "嘗試獲取線盤時發生錯誤" msgid "Error: Couldn't get a position to probe" msgstr "錯誤:無法取得要探測的位置" msgid "Estimated Time" -msgstr "" +msgstr "預計時間" msgid "Estimated Time Method" msgstr "估算剩餘時間方式" msgid "Example" -msgstr "" +msgstr "範例" msgid "Exclude Object" msgstr "排除目標" @@ -287,10 +287,10 @@ msgid "Extrusion -" msgstr "擠壓 -" msgid "Failed to delete connection" -msgstr "" +msgstr "刪除連線失敗" msgid "Failed to initialize" -msgstr "" +msgstr "初始化失敗" msgid "Failed, adjust position first" msgstr "失敗,請先調整位置" @@ -299,7 +299,7 @@ msgid "Fan" msgstr "風扇" msgid "Filament" -msgstr "" +msgstr "線材" msgid "Filament Used" msgstr "已消耗耗材" @@ -344,10 +344,10 @@ msgid "Font Size" msgstr "字型大小" msgid "For mouse control or to verify touchscreen accuracy" -msgstr "" +msgstr "用於滑鼠控制或驗證觸控螢幕的準確性" msgid "Forget" -msgstr "" +msgstr "忘記" msgid "Full Update" msgstr "全部更新" @@ -356,7 +356,7 @@ msgid "Gcodes" msgstr "" msgid "Getting IP address" -msgstr "" +msgstr "取得IP位址" msgid "Go Back" msgstr "返回" @@ -410,7 +410,7 @@ msgid "Input Shaper" msgstr "共振補償" msgid "Insufficient privileges" -msgstr "" +msgstr "權限不足" msgid "Interface" msgstr "介面" @@ -421,13 +421,11 @@ msgstr "無效" msgid "Invalid password" msgstr "密碼無效" -#, fuzzy -#| msgid "Temperature" msgid "Invalid temperature" -msgstr "溫度" +msgstr "無效的溫度" msgid "Inversely affects the icon size" -msgstr "" +msgstr "反轉圖示大小效果" msgid "Invert X" msgstr "反轉X軸" @@ -442,10 +440,10 @@ msgid "It may take more than 5 minutes depending on the heater power." msgstr "這可能需要5分鐘以上的時間,這取決於加熱器的功率。" msgid "It's possible that the configuration is not correct" -msgstr "" +msgstr "配置可能不正確" msgid "Job Status" -msgstr "" +msgstr "工作狀態" msgid "Klipper Restart" msgstr "重啟Klipper" @@ -467,7 +465,7 @@ msgstr "Klipper將重新啟動" msgid "" "LOAD_FILAMENT/UNLOAD_FILAMENT are hidden and should be used from extrude" -msgstr "" +msgstr "OAD_FILAMENT/UNLOAD_FILAMENT 已被隱藏,應從擠出功能中使用" msgid "Language" msgstr "介面語言" @@ -476,19 +474,19 @@ msgid "Large" msgstr "大" msgid "Last Duration" -msgstr "" +msgstr "上次耗時" msgid "Last Used" msgstr "最後使用" msgid "Layer Height" -msgstr "" +msgstr "層高" msgid "Layer:" msgstr "層:" msgid "Leds" -msgstr "" +msgstr "LED" msgid "Left:" msgstr "剩餘時間:" @@ -530,7 +528,7 @@ msgid "Max Velocity" msgstr "最大速度" msgid "Max:" -msgstr "" +msgstr "最大:" msgid "Maximum" msgstr "最大" @@ -554,10 +552,10 @@ msgid "Menu" msgstr "選單" msgid "Minimum Cruise Ratio" -msgstr "" +msgstr "最小巡航率" msgid "Minimum:" -msgstr "" +msgstr "最小:" msgid "Modified" msgstr "已修改" @@ -581,13 +579,13 @@ msgid "Network" msgstr "網路" msgid "Network connected" -msgstr "" +msgstr "網路已連線" msgid "Network disconnected" -msgstr "" +msgstr "網路已斷線" msgid "Network not found" -msgstr "" +msgstr "未找到網路" msgid "Never" msgstr "從不" @@ -599,7 +597,7 @@ msgid "No elegible macros:" msgstr "無可用巨集:" msgid "No info available" -msgstr "" +msgstr "沒有可用的資訊" msgid "No mesh has been loaded" msgstr "未載入網床" @@ -608,25 +606,25 @@ msgid "No wireless interface has been found" msgstr "未找到wifi介面" msgid "Not all screens support this" -msgstr "" +msgstr "並非所有螢幕都支持此功能" msgid "Not working or not configured" -msgstr "" +msgstr "無法運作或未配置" msgid "Nothing selected" msgstr "未選擇任何內容" msgid "Notification log empty" -msgstr "" +msgstr "通知紀錄為空" msgid "Notifications" -msgstr "" +msgstr "通知" msgid "Nozzle diameter" -msgstr "" +msgstr "噴嘴直徑" msgid "Only for the move panel" -msgstr "" +msgstr "僅用於移動面板" #, python-format msgid "Outdated by %d" @@ -639,10 +637,8 @@ msgstr[0] "軟體包將被更新" msgid "Part Fan" msgstr "模型風扇" -#, fuzzy -#| msgid "Password saved" msgid "Password" -msgstr "密碼已儲存" +msgstr "密碼" msgid "Password saved" msgstr "密碼已儲存" @@ -663,7 +659,7 @@ msgid "Please recompile and flash the micro-controller." msgstr "請重新編譯並燒錄微控制器。" msgid "Please wait" -msgstr "" +msgstr "請稍候" msgid "Power" msgstr "電源" @@ -672,13 +668,13 @@ msgid "Power On Printer" msgstr "啟動列印機" msgid "Pressure Advance" -msgstr "壓力推進" +msgstr "壓力提前" msgid "Pressure Advance:" msgstr "壓力推進:" msgid "Pressure advance" -msgstr "" +msgstr "壓力提前" msgid "Print" msgstr "列印" @@ -705,7 +701,7 @@ msgid "Profile Name:" msgstr "設定檔名稱:" msgid "Provide KlipperScreen.log when asking for help.\n" -msgstr "" +msgstr "在尋求幫助時,請提供 KlipperScreen.log。\n" msgid "Quad Gantry Level" msgstr "龍門架調平" @@ -729,7 +725,7 @@ msgid "Refresh" msgstr "重新整理" msgid "Remove network" -msgstr "" +msgstr "移除網路" msgid "Rename/Move:" msgstr "重新命名/移動:" @@ -759,7 +755,7 @@ msgid "Retrying" msgstr "正在重試" msgid "Rotation invalid" -msgstr "" +msgstr "旋轉無效" msgid "Save" msgstr "儲存" @@ -790,7 +786,7 @@ msgid "Screws Adjust" msgstr "螺絲調整" msgid "Screws not used:" -msgstr "" +msgstr "未使用的螺絲:" msgid "Send" msgstr "發送" @@ -808,13 +804,13 @@ msgid "Show Heater Power" msgstr "顯示加熱器功率" msgid "Show Scrollbars Buttons" -msgstr "" +msgstr "顯示捲軸按鈕" msgid "Show cursor" -msgstr "" +msgstr "顯示游標" msgid "Show only devices that are able to be set" -msgstr "" +msgstr "僅顯示可以設置的設備" msgid "Shutdown" msgstr "關閉" @@ -832,7 +828,7 @@ msgid "Small" msgstr "小" msgid "Smooth time" -msgstr "" +msgstr "平滑時間" msgid "Speed (mm/s)" msgstr "速度(mm/s)" @@ -850,7 +846,7 @@ msgid "Square Corner Velocity" msgstr "直角速度" msgid "Standby" -msgstr "" +msgstr "待機" msgid "Start" msgstr "開始" @@ -862,7 +858,7 @@ msgid "Starting update for" msgstr "開始更新" msgid "Swaps buttons if they are on top of each other, affects other panels" -msgstr "" +msgstr "交換按鈕位置,此選項將影響其他面板" msgid "System" msgstr "系統" @@ -874,7 +870,7 @@ msgid "System Shutdown" msgstr "關閉系統" msgid "System:" -msgstr "" +msgstr "系統:" msgid "Temp (°C)" msgstr "溫度 (°C)" @@ -883,22 +879,22 @@ msgid "Temperature" msgstr "溫度" msgid "Temperature too low to extrude" -msgstr "" +msgstr "溫度過低無法擠出" msgid "The system doesn't meet the minimum requirement" -msgstr "" +msgstr "系統不符合最低要求" msgid "This panel supports up-to 9 screws in a 3x3 Grid" -msgstr "" +msgstr "此面板最多支援 9 顆調平螺絲排列於 3x3 格網中" msgid "This will affect screw positions and mesh graph" -msgstr "" +msgstr "這將影響螺絲位置和網格圖表" msgid "Timeout for screen black-out or power-off" -msgstr "" +msgstr "螢幕轉黑或關機的超時設定" msgid "Timeout for screen black-out or power-off during printing" -msgstr "" +msgstr "列印過程中螢幕轉黑或關機的超時設定" msgid "Total:" msgstr "合計:" @@ -907,7 +903,7 @@ msgid "Unknown Heater" msgstr "未知加熱器" msgid "Unknown security type" -msgstr "" +msgstr "未知的安全類型" msgid "Unload" msgstr "解除安裝" @@ -928,16 +924,16 @@ msgid "Updating" msgstr "正在更新" msgid "Useful for un-responsive touchscreens" -msgstr "" +msgstr "對於無回應的觸控螢幕很有幫助" msgid "User" -msgstr "" +msgstr "使用者" msgid "WebRTC is not supported by the backend trying Stream" msgstr "" msgid "Working" -msgstr "" +msgstr "工作中" msgid "XY Move Speed (mm/s)" msgstr "XY軸移動速度(mm/s)" @@ -966,27 +962,27 @@ msgstr[0] "更改" msgid "day" msgid_plural "days" -msgstr[0] "" +msgstr[0] "天" msgid "g" -msgstr "" +msgstr "g" msgid "hour" msgid_plural "hours" msgstr[0] "小時" msgid "macros that use 'rename_existing' are hidden" -msgstr "" +msgstr "使用 rename_existing 的巨集將會被隱藏" msgid "macros with a name starting with '_' are hidden" -msgstr "" +msgstr "以 ' _ '開頭的巨集將會被隱藏" msgid "minute" msgid_plural "minutes" msgstr[0] "分" msgid "mm" -msgstr "秒" +msgstr "mm" msgid "mm/s" msgstr "mm/s" @@ -998,11 +994,11 @@ msgid "mm³/s" msgstr "mm³/s" msgid "s" -msgstr "" +msgstr "s" msgid "second" msgid_plural "seconds" -msgstr[0] "" +msgstr[0] "秒" #~ msgid "Hide temp." #~ msgstr "隱藏溫度" From 301514f43679b8307cab9755fde28353c99ba77a Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Fri, 15 Nov 2024 15:39:42 -0300 Subject: [PATCH 10/21] fix: screensaver issues when using dpms close #1505 --- ks_includes/widgets/screensaver.py | 5 +++-- screen.py | 7 ++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ks_includes/widgets/screensaver.py b/ks_includes/widgets/screensaver.py index f73fa05b0..9eacd0c71 100644 --- a/ks_includes/widgets/screensaver.py +++ b/ks_includes/widgets/screensaver.py @@ -31,9 +31,10 @@ def reset_timeout(self, *args): self.screen.blanking_time, self.show) def show(self): - logging.debug("Showing Screensaver") if self.blackbox is not None: - self.close() + logging.debug("Screensaver active") + return + logging.debug("Showing Screensaver") if self.screensaver_timeout is not None: GLib.source_remove(self.screensaver_timeout) self.screensaver_timeout = None diff --git a/screen.py b/screen.py index de5870eba..1a5e603d5 100755 --- a/screen.py +++ b/screen.py @@ -77,6 +77,7 @@ class KlipperScreen(Gtk.Window): notification_log = [] prompt = None tempstore_timeout = None + check_dpms_timeout = None def __init__(self, args): self.server_info = None @@ -631,6 +632,9 @@ def wake_screen(self): os.system(f"xset -display {self.display_number} dpms force on") def set_dpms(self, use_dpms): + if not use_dpms: + GLib.source_remove(self.check_dpms_timeout) + self.check_dpms_timeout = None self.use_dpms = use_dpms logging.info(f"DPMS set to: {self.use_dpms}") if self.printer.state in ("printing", "paused"): @@ -668,7 +672,8 @@ def set_screenblanking_timeout(self, time): logging.debug("Using DPMS") if not self.wayland: os.system(f"xset -display {self.display_number} dpms 0 {self.blanking_time} 0") - GLib.timeout_add_seconds(1, self.check_dpms_state) + if self.check_dpms_timeout is None: + self.check_dpms_timeout = GLib.timeout_add_seconds(1, self.check_dpms_state) return # Without dpms just blank the screen logging.debug("Not using DPMS") From 8e4f859b09e5f1f739c132ff6f98f653aafab0e5 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Fri, 15 Nov 2024 19:11:14 -0300 Subject: [PATCH 11/21] feat: turn off power devices that are associated to the turn on button when shutting down printer --- panels/shutdown.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/panels/shutdown.py b/panels/shutdown.py index 0dcb45c3e..08ef1423b 100644 --- a/panels/shutdown.py +++ b/panels/shutdown.py @@ -79,4 +79,12 @@ def reboot_poweroff_confirm(self, dialog, response_id, method): if method == "reboot": self._screen._ws.send_method("machine.reboot") else: + self.turn_off_power_devices() self._screen._ws.send_method("machine.shutdown") + + def turn_off_power_devices(self): + if self.ks_printer_cfg is not None and self._screen._ws.connected: + power_devices = self.ks_printer_cfg.get("power_devices", "") + if power_devices and self._printer.get_power_devices(): + logging.info(f"Turning off associated power devices: {power_devices}") + self._screen.power_devices(widget=None, devices=power_devices, on=False) From 6d79b31f56a31908a07e4a159f69d2390c222c2e Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Mon, 25 Nov 2024 14:23:20 +0100 Subject: [PATCH 12/21] chore(locales): Translations update from Hosted Weblate (#1509) * Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (322 of 322 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (322 of 322 strings) Co-authored-by: Kayz C Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/zh_Hant/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Lithuanian) Currently translated at 100.0% (322 of 322 strings) Co-authored-by: vjurka Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/lt/ Translation: KlipperScreen/KlipperScreen --------- Co-authored-by: Kayz C Co-authored-by: vjurka --- .../locales/lt/LC_MESSAGES/KlipperScreen.mo | Bin 18931 -> 19243 bytes .../locales/lt/LC_MESSAGES/KlipperScreen.po | 24 +++--- .../zh_TW/LC_MESSAGES/KlipperScreen.mo | Bin 17798 -> 17971 bytes .../zh_TW/LC_MESSAGES/KlipperScreen.po | 76 +++++++++--------- 4 files changed, 48 insertions(+), 52 deletions(-) diff --git a/ks_includes/locales/lt/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/lt/LC_MESSAGES/KlipperScreen.mo index 9fa519ff68a9826235919aaedcf5818d53b7f8e8..80644fbe56f3f8b77d6f4368561a6d8d9bafb2c9 100644 GIT binary patch delta 7197 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 U+|ucJUvN^FlfK|X-H!VH2Pf&oKL7v# diff --git a/ks_includes/locales/lt/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/lt/LC_MESSAGES/KlipperScreen.po index 359c53191..2709eb1a4 100644 --- a/ks_includes/locales/lt/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/lt/LC_MESSAGES/KlipperScreen.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-09 18:08-0300\n" -"PO-Revision-Date: 2024-07-16 13:09+0000\n" +"PO-Revision-Date: 2024-11-21 13:02+0000\n" "Last-Translator: vjurka \n" "Language-Team: Lithuanian \n" @@ -16,9 +16,9 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"(n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 5.7-dev\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (" +"n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Weblate 5.9-dev\n" #, python-format msgid "%s will be updated to version" @@ -345,7 +345,7 @@ msgid "Font Size" msgstr "Šrifto dydis" msgid "For mouse control or to verify touchscreen accuracy" -msgstr "" +msgstr "Norėdami valdyti pele ar patikrinti jutiklinio ekrano tikslumą" msgid "Forget" msgstr "Užmiršti" @@ -422,10 +422,8 @@ msgstr "Neteisinga" msgid "Invalid password" msgstr "Blogas slaptažodis" -#, fuzzy -#| msgid "Temperature" msgid "Invalid temperature" -msgstr "Temperatūra" +msgstr "Neteisinga temperatūra" msgid "Inversely affects the icon size" msgstr "Atvirkščiai veikia piktogramos dydį" @@ -645,10 +643,8 @@ msgstr[2] "Paketai bus atnaujinti" msgid "Part Fan" msgstr "Dirbinio ventiliatorius" -#, fuzzy -#| msgid "Password saved" msgid "Password" -msgstr "Slaptažodis išsaugotas" +msgstr "Slaptažodis" msgid "Password saved" msgstr "Slaptažodis išsaugotas" @@ -817,7 +813,7 @@ msgid "Show Scrollbars Buttons" msgstr "Rodyti stumdymo juostą" msgid "Show cursor" -msgstr "" +msgstr "Rodyti kursorių" msgid "Show only devices that are able to be set" msgstr "Rodyti tik tuos įrenginius, kuriuos galima nustatyti" @@ -890,7 +886,7 @@ msgid "Temperature" msgstr "Temperatūra" msgid "Temperature too low to extrude" -msgstr "" +msgstr "Per maža temperatūra ekstruzijai" msgid "The system doesn't meet the minimum requirement" msgstr "Sistema neatitinka minimalių reikalavimų" @@ -938,7 +934,7 @@ msgid "Useful for un-responsive touchscreens" msgstr "Naudinga nereaguojantiems jutikliniams ekranams" msgid "User" -msgstr "" +msgstr "Vartotojas" msgid "WebRTC is not supported by the backend trying Stream" msgstr "WebRTC nepalaikoma, bandoma Stream" diff --git a/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.mo index 4959838f54c6003c0d4210c1b9eb313407bb630e..b0bcafb19522a70d7441eca12fc322c2cbac02e2 100644 GIT binary patch delta 7448 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\n" "Language-Team: Chinese (Traditional Han script) \n" @@ -62,7 +62,7 @@ msgid "Apply %s%.3f offset to Probe?" msgstr "將 %s%.3f 偏移套用於探針?" msgid "Archived" -msgstr "歸檔" +msgstr "已封存" msgid "Are you sure do you want to exclude the object?" msgstr "你確定要排除該目標嗎?" @@ -119,7 +119,7 @@ msgid "Calibrating" msgstr "正在校準" msgid "Camera" -msgstr "相機" +msgstr "攝影機" msgid "Can't set above the maximum:" msgstr "設定值超出最大值:" @@ -137,7 +137,7 @@ msgid "Cancelling" msgstr "正在取消" msgid "Cannot connect to Moonraker" -msgstr "无法连接到Moonraker" +msgstr "無法連接到Moonraker" msgid "Changes how the interface looks" msgstr "變更介面外觀" @@ -219,7 +219,7 @@ msgid "Disable for 12hs with am / pm" msgstr "在十二小時顯示模式中不顯示AM/PM" msgid "Disconnect" -msgstr "断开" +msgstr "斷開連線" msgid "Distance (mm)" msgstr "擠出長度(mm)" @@ -239,7 +239,7 @@ msgid "Emergency Stop" msgstr "緊急停止" msgid "Enable screen power management" -msgstr "開啟螢幕功率管理功能" +msgstr "開啟螢幕電源管理功能" msgid "Error" msgstr "錯誤" @@ -302,16 +302,16 @@ msgid "Filament" msgstr "線材" msgid "Filament Used" -msgstr "已消耗耗材" +msgstr "已用線材" msgid "Filament total:" -msgstr "使用耗材總數:" +msgstr "使用線材總數:" msgid "Filament used:" -msgstr "使用耗材:" +msgstr "已用線材:" msgid "Filament:" -msgstr "耗材:" +msgstr "線材:" msgid "File" msgstr "檔案" @@ -323,7 +323,7 @@ msgid "Filter" msgstr "過濾器" msgid "Finding ADXL" -msgstr "查詢ADXL" +msgstr "尋找ADXL中" msgid "Fine Tuning" msgstr "微調" @@ -353,7 +353,7 @@ msgid "Full Update" msgstr "全部更新" msgid "Gcodes" -msgstr "" +msgstr "Gcode" msgid "Getting IP address" msgstr "取得IP位址" @@ -368,25 +368,25 @@ msgid "Hide" msgstr "隱藏" msgid "Hide sensors in Temp." -msgstr "在溫度顯示中隱藏其他感測器" +msgstr "在溫度顯示中隱藏感測器" msgid "Home" -msgstr "歸零" +msgstr "歸位" msgid "Home All" -msgstr "全部歸零" +msgstr "全部歸位" msgid "Home X" -msgstr "X軸歸零" +msgstr "歸位X軸" msgid "Home XY" -msgstr "XY軸歸零" +msgstr "歸位XY軸" msgid "Home Y" -msgstr "Y軸歸零" +msgstr "歸位Y軸" msgid "Home Z" -msgstr "Z軸歸零" +msgstr "歸位Z軸" msgid "Host" msgstr "主機" @@ -407,7 +407,7 @@ msgid "Initiate a PID calibration for:" msgstr "啟動PID校準:" msgid "Input Shaper" -msgstr "共振補償" +msgstr "輸入整形" msgid "Insufficient privileges" msgstr "權限不足" @@ -465,10 +465,10 @@ msgstr "Klipper將重新啟動" msgid "" "LOAD_FILAMENT/UNLOAD_FILAMENT are hidden and should be used from extrude" -msgstr "OAD_FILAMENT/UNLOAD_FILAMENT 已被隱藏,應從擠出功能中使用" +msgstr "LOAD_FILAMENT/UNLOAD_FILAMENT 已被隱藏,應從擠出功能中使用" msgid "Language" -msgstr "介面語言" +msgstr "語言" msgid "Large" msgstr "大" @@ -483,7 +483,7 @@ msgid "Layer Height" msgstr "層高" msgid "Layer:" -msgstr "層:" +msgstr "層數:" msgid "Leds" msgstr "LED" @@ -495,10 +495,10 @@ msgid "Limits" msgstr "列印機限制" msgid "Load" -msgstr "載入耗材" +msgstr "裝載線材" msgid "Loading..." -msgstr "載入中..." +msgstr "裝載中..." msgid "Lost Connection to Moonraker" msgstr "與Moonraker失去連接" @@ -564,7 +564,7 @@ msgid "Moonraker: connected" msgstr "Moonraker:已連線" msgid "More" -msgstr "更多設定" +msgstr "更多" msgid "Move" msgstr "移動" @@ -600,13 +600,13 @@ msgid "No info available" msgstr "沒有可用的資訊" msgid "No mesh has been loaded" -msgstr "未載入網床" +msgstr "未載入網格" msgid "No wireless interface has been found" -msgstr "未找到wifi介面" +msgstr "未找到WiFi介面" msgid "Not all screens support this" -msgstr "並非所有螢幕都支持此功能" +msgstr "並非所有螢幕都支援此功能" msgid "Not working or not configured" msgstr "無法運作或未配置" @@ -632,10 +632,10 @@ msgstr "已過時 %d" msgid "Package will be updated" msgid_plural "Packages will be updated" -msgstr[0] "軟體包將被更新" +msgstr[0] "套件將被更新" msgid "Part Fan" -msgstr "模型風扇" +msgstr "列印件風扇" msgid "Password" msgstr "密碼" @@ -671,7 +671,7 @@ msgid "Pressure Advance" msgstr "壓力提前" msgid "Pressure Advance:" -msgstr "壓力推進:" +msgstr "壓力提前:" msgid "Pressure advance" msgstr "壓力提前" @@ -710,7 +710,7 @@ msgid "Raise Nozzle" msgstr "升高噴嘴" msgid "Recover" -msgstr "恢復" +msgstr "還原" msgid "Recover Hard" msgstr "硬恢復(git recover hard)" @@ -737,7 +737,7 @@ msgid "Resume" msgstr "繼續" msgid "Retract" -msgstr "抽回" +msgstr "回抽" msgid "Retraction" msgstr "回抽" @@ -813,7 +813,7 @@ msgid "Show only devices that are able to be set" msgstr "僅顯示可以設置的設備" msgid "Shutdown" -msgstr "關閉" +msgstr "關機" msgid "Size" msgstr "大小" @@ -897,10 +897,10 @@ msgid "Timeout for screen black-out or power-off during printing" msgstr "列印過程中螢幕轉黑或關機的超時設定" msgid "Total:" -msgstr "合計:" +msgstr "總計:" msgid "Unknown Heater" -msgstr "未知加熱器" +msgstr "未知的加熱器" msgid "Unknown security type" msgstr "未知的安全類型" @@ -930,7 +930,7 @@ msgid "User" msgstr "使用者" msgid "WebRTC is not supported by the backend trying Stream" -msgstr "" +msgstr "WebRTC 不被目前後端支持,請嘗試使用其他串流媒體方式" msgid "Working" msgstr "工作中" From 02d791f4d11b818ca9565294cc8799c91aa2a53a Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sat, 23 Nov 2024 15:49:13 -0300 Subject: [PATCH 13/21] fix: heatergraph exception --- ks_includes/widgets/heatergraph.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ks_includes/widgets/heatergraph.py b/ks_includes/widgets/heatergraph.py index f92312846..3883a4391 100644 --- a/ks_includes/widgets/heatergraph.py +++ b/ks_includes/widgets/heatergraph.py @@ -1,6 +1,7 @@ import datetime import logging import math +from array import array import gi @@ -69,9 +70,11 @@ def get_max_num(self, data_points=0): mnum = [0] for device in self.store: if self.store[device]['show']: - if temp := self.printer.get_temp_store(device, "temperatures", data_points): + temp = self.printer.get_temp_store(device, "temperatures", data_points) + if isinstance(temp, list): mnum.append(max(temp)) - if target := self.printer.get_temp_store(device, "targets", data_points): + target = self.printer.get_temp_store(device, "targets", data_points) + if isinstance(target, list): mnum.append(max(target)) return max(mnum) From 48aa50332e92ff0eadf07a55510dd6c3a0b01116 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Mon, 25 Nov 2024 10:08:00 -0300 Subject: [PATCH 14/21] refactor: add and use available commands for z_tilt and quad_level close #1512 --- config/move_menu.conf | 4 ++-- docs/Configuration.md | 1 + ks_includes/printer.py | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/config/move_menu.conf b/config/move_menu.conf index b34d4bde7..e8521d76d 100644 --- a/config/move_menu.conf +++ b/config/move_menu.conf @@ -42,7 +42,7 @@ name: {{ gettext('Quad Gantry Level') }} icon: home-z method: printer.gcode.script params: {"script":"QUAD_GANTRY_LEVEL"} -enable: {{ 'quad_gantry_level' in printer.config_sections }} +enable: {{ 'QUAD_GANTRY_LEVEL' in printer.available_commands }} active: {{ printer.quad_gantry_level.applied }} [menu move homing Z-Tilt] @@ -50,5 +50,5 @@ name: {{ gettext('Z Tilt') }} icon: z-tilt method: printer.gcode.script params: {"script":"Z_TILT_ADJUST"} -enable: {{ 'z_tilt' in printer.config_sections }} +enable: {{ 'Z_TILT_ADJUST' in printer.available_commands }} active: {{ printer.z_tilt.applied }} \ No newline at end of file diff --git a/docs/Configuration.md b/docs/Configuration.md index 051ee6ca8..554d360d9 100644 --- a/docs/Configuration.md +++ b/docs/Configuration.md @@ -210,6 +210,7 @@ printer.gcode_macros.count # Number of gcode macros printer.gcode_macros.list # List of names of the gcode macros printer.leds.count # Number of leds printer.config_sections # Array of section headers of Klipper config (printer.cfg) +printer.available_commands # List of all the commands that the printer supports ``` diff --git a/ks_includes/printer.py b/ks_includes/printer.py index a5d1ec89a..fa46e805b 100644 --- a/ks_includes/printer.py +++ b/ks_includes/printer.py @@ -260,6 +260,7 @@ def get_printer_status_data(self): "homed_axes": self.get_stat("toolhead", "homed_axes"), "quad_gantry_level": self.get_stat("quad_gantry_level"), "z_tilt": self.get_stat("z_tilt"), + "available_commands": self.available_commands, } } From b9eaaf6a922ffe61a78997d9901f7188320ff475 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Mon, 25 Nov 2024 11:00:05 -0300 Subject: [PATCH 15/21] fix(exclude): current object --- panels/exclude.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/panels/exclude.py b/panels/exclude.py index 93c89acd8..ebece6e45 100644 --- a/panels/exclude.py +++ b/panels/exclude.py @@ -75,7 +75,10 @@ def exclude_object(self, widget, name): ) def exclude_current(self, widget): - self.exclude_object(widget, f"{self.current_object.get_label()}") + current = self._printer.data["exclude_object"]["current_object"] + if current is None: + return + self.exclude_object(widget, f"{current}") def process_update(self, action, data): if action == "notify_status_update": From e2ac3f1ef15d0013a6020990da817a4403f59b55 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Mon, 25 Nov 2024 12:06:00 -0300 Subject: [PATCH 16/21] fix: dialog confirm not being cleared close #1508 --- ks_includes/KlippyGtk.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ks_includes/KlippyGtk.py b/ks_includes/KlippyGtk.py index 6759f9f1f..0130389f5 100644 --- a/ks_includes/KlippyGtk.py +++ b/ks_includes/KlippyGtk.py @@ -261,6 +261,8 @@ def remove_dialog(self, dialog, *args): return if self.screen.updating: return + if dialog == self.screen.confirm: + self.screen.confirm = None dialog.destroy() if dialog in self.screen.dialogs: logging.info("Removing Dialog") From 3a372b74d3979cfbcdf02ef076505b0ce1bc8c0f Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Mon, 25 Nov 2024 13:38:10 -0300 Subject: [PATCH 17/21] refactor: thumb log message cut decimals --- panels/gcodes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panels/gcodes.py b/panels/gcodes.py index a369e3316..b45e0bace 100644 --- a/panels/gcodes.py +++ b/panels/gcodes.py @@ -69,7 +69,7 @@ def __init__(self, screen, title): self.labels['path'] = Gtk.Label(label=self.loading_msg, vexpand=True, no_show_all=True) self.labels['path'].show() self.thumbsize = self._gtk.img_scale * self._gtk.button_image_scale * 2.5 - logging.info(f"Thumbsize: {self.thumbsize}") + logging.info(f"Thumbsize: {self.thumbsize:.1f}") self.flowbox = Gtk.FlowBox(selection_mode=Gtk.SelectionMode.NONE, column_spacing=0, row_spacing=0) From 48fcfbf353715bb4ee01021ae0bf37b94a277948 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Mon, 25 Nov 2024 13:59:42 -0300 Subject: [PATCH 18/21] chore(locales): update bulgarian Co-authored-by: nikdan close #1513 --- .../locales/bg/LC_MESSAGES/KlipperScreen.mo | Bin 478 -> 23992 bytes .../locales/bg/LC_MESSAGES/KlipperScreen.po | 1091 +++++++++++++++++ 2 files changed, 1091 insertions(+) create mode 100644 ks_includes/locales/bg/LC_MESSAGES/KlipperScreen.po diff --git a/ks_includes/locales/bg/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/bg/LC_MESSAGES/KlipperScreen.mo index fa19718fa9ae42088f69439e091d7fb42819d247..a253a33cd0d4d922d833235f680c80a5980323b2 100644 GIT binary patch literal 23992 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%0D4dRme z!DVTqcG6Eg@07uzX%K1&dMpGpZY1Wtk)i;-=&IaKaoD~#a6h84Iulexh;EDJlE47r z%QP!D12Q5VEBNLSjUq_bR1u*L0lP8AUGV{A8}mU%)x~hF8Co*j*mpDeaP13jZ)+R4 zxvgnnwFk|w*e`q7tubUhyVYS1MudGgYjHT~&nkDDQ;rIMLni?HJ)gG;OzynEV(W=hc z;E=lFm2!yAHH#s+$DA>T`srzT6Tdxmbt#pURaT%ie7D+WEe{8jzuWFnY~!#Gx!&xC zy<4au#m!}jfesw{-T}=~+UONTiJX#mcm&&cq8F>lpSks%kF@msF-Fs@c<=e_LVwk< zLsrN{Phyq^z`lV|V(6Z5c1L-iGs$(PJ>GQ0QoBX6 zEEQuliP#^-K(3$ZUF$#e)%`xpbi5v#Mj{Jm<~~=_M6&KG*XOs0hSS%6yJPG1_^)j7 z8cw-M9=I!J0x29WqEhL1axNw*#<|-Sz_h6c_qkTuk4@?;2FA-(DXvt$0+HK_QwU}! zxLNG#v8{@*-SKaj8D*CrXq>da#()^)E(AE9(vPTy$Mb0!%Wm#l7y92emmg(c?nvLG zpEC^LiKzijA4>V5bAKSBLSr@i{Qm?%yb+)5n}G&pX~RqyF0Yzx`7o0$50yi)jH1=u+Rv^U| zhy53buy*jztr_WJDU@gmL^o(wHmS)V--RDd3K1p_3tFLmh&|*?$`=*tjM%thYjB6i cO&Q5SjQm7fE%qaA?Na(h#^ki1wz?zu9}pDxkN^Mx delta 245 zcmdn7oADlV{XHR;sSH5C2*ff#tOCT$K&%7AAYcK+OMsG=KpLb54g!kuvr>~wbUjma z!%~ZiGxPJT6r4(P(i4j^6Y~@_ymK-O3Q~)LlZ#SQ^EA1FQVa5nN_2gT(=$_aol4V- zbwl#46u1H=+ZqTuM7lZ#>H7NXx;QF$_*?mUYDf9|xpMg=7MJLT6eZ>r=OmWo7g;H| zh5Gm?_&NHzD%iOCI(qszIJ&q5xdsQ@O)fQfp_ZqhXscjo%@v{Ro|>0h1knD^t$o4;i diff --git a/ks_includes/locales/bg/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/bg/LC_MESSAGES/KlipperScreen.po new file mode 100644 index 000000000..cc26ade4c --- /dev/null +++ b/ks_includes/locales/bg/LC_MESSAGES/KlipperScreen.po @@ -0,0 +1,1091 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: KlipperScreen\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-10-09 18:08-0300\n" +"PO-Revision-Date: 2024-10-10 10:54+0300\n" +"Last-Translator: \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.5\n" + +#, python-format +msgid "%s will be updated to version" +msgstr "%s ще бъде актуализиран до версия" + +msgid "(default)" +msgstr "(по подразбиране)" + +msgid "24 Hour Time" +msgstr "24 часово време" + +msgid "A FIRMWARE_RESTART may fix the issue." +msgstr "Рестартиране на фърмуера може да реши проблема." + +msgid "ADXL Not Configured" +msgstr "ADXL не е конфигуриран" + +msgid "Abort" +msgstr "Прекъсване" + +msgid "Acceleration:" +msgstr "Ускорение:" + +msgid "Accept" +msgstr "Приложи" + +msgid "Add profile" +msgstr "Добавете профил" + +msgid "All" +msgstr "Всички" + +msgid "Apply" +msgstr "Приложи" + +#, python-format +msgid "Apply %s%.3f offset to Endstop?" +msgstr "Да се ​​приложи ли отместване на %s%.3f към Endstop?" + +#, python-format +msgid "Apply %s%.3f offset to Probe?" +msgstr "Прилагане на %s%.3f отместване към сонда?" + +msgid "Archived" +msgstr "Архивирано" + +msgid "Are you sure do you want to exclude the object?" +msgstr "Сигурни ли сте, че искате да изключите обекта?" + +msgid "Are you sure you want to run Emergency Stop?" +msgstr "Сигурни ли сте, че искате да стартирате аварийно спиране?" + +msgid "Are you sure you wish to cancel this print?" +msgstr "Сигурни ли сте, че искате да отмените този печат?" + +msgid "Are you sure you wish to disable motors?" +msgstr "Сигурни ли сте, че искате да деактивирате двигателите?" + +msgid "Are you sure you wish to reboot the system?" +msgstr "Сигурни ли сте, че искате да рестартирате системата?" + +msgid "Are you sure you wish to shutdown the system?" +msgstr "Сигурни ли сте, че искате да изключите системата?" + +msgid "Asks for confirmation before stopping" +msgstr "Иска потвърждение преди спиране" + +msgid "Auto" +msgstr "Авто" + +msgid "Auto-calibrate" +msgstr "Автоматично калибриране" + +msgid "Auto-close notifications" +msgstr "Известия за автоматично затваряне" + +msgid "Auto-open Extrude On Pause" +msgstr "Автоматично отваряне на екструдиране при пауза" + +msgid "Auto-scroll" +msgstr "Автоматично превъртане" + +msgid "Bed Level" +msgstr "Ниво на леглото" + +msgid "Bed Mesh" +msgstr "Мрежа за легло" + +msgid "Both" +msgstr "И двете" + +msgid "Calibrate" +msgstr "Калибриране" + +msgid "Calibrated" +msgstr "Калибриран" + +msgid "Calibrating" +msgstr "Калибриране" + +msgid "Camera" +msgstr "Камера" + +msgid "Can't set above the maximum:" +msgstr "Не може да се зададе над максимума:" + +msgid "Cancel" +msgstr "Отказ" + +msgid "Cancel Print" +msgstr "Край на печата" + +msgid "Cancelled" +msgstr "Отменен" + +msgid "Cancelling" +msgstr "Отмяна" + +msgid "Cannot connect to Moonraker" +msgstr "Не може да се свърже с Moonraker" + +msgid "Changes how the interface looks" +msgstr "Променя начина, по който изглежда интерфейсът" + +msgid "Changes how the time remaining is calculated" +msgstr "Променя начина на изчисляване на оставащото време" + +msgid "Channel" +msgstr "Канал" + +msgid "Check ADXL Wiring" +msgstr "Проверете ADXL свързването" + +msgid "Checking for updates, please wait..." +msgstr "Проверява се за актуализации, моля изчакайте..." + +msgid "Clear" +msgstr "Изчисти" + +msgid "Close" +msgstr "Затваряне" + +msgid "Close messages after a timeout" +msgstr "Затваряне на съобщения след изчакване" + +msgid "Complete" +msgstr "Завършено" + +msgid "Confirm Emergency Stop" +msgstr "Потвърдете аварийно спиране" + +msgid "Connected" +msgstr "Свързан" + +msgid "Connecting" +msgstr "Свързване" + +#, python-format +msgid "Connecting to %s" +msgstr "Свързан с %s" + +msgid "Connection failed" +msgstr "Връзката е неуспешна" + +msgid "Console" +msgstr "Конзола" + +msgid "Cooldown" +msgstr "Охлади" + +msgid "Couldn't add network" +msgstr "Неуспешно добавяне на мрежа" + +msgid "Current" +msgstr "Текущ" + +msgid "Current percentage and graph line" +msgstr "Текущ процент и графика" + +msgid "DPMS has failed to load and has been disabled" +msgstr "DPMS не успя да се зареди и е деактивиран" + +msgid "Date" +msgstr "Дата" + +msgid "Delete" +msgstr "Изтриване" + +msgid "Delete Directory?" +msgstr "Изтриване на директория?" + +msgid "Delete File?" +msgstr "Изтрий файла?" + +msgid "Disable Motors" +msgstr "Изкл. моторите" + +msgid "Disable for 12hs with am / pm" +msgstr "Деактивирайте за 12 часа с am / pm" + +msgid "Disconnect" +msgstr "Прекъснете връзката" + +msgid "Distance (mm)" +msgstr "Растояние (mm)" + +#, python-format +msgid "Do you want to forget or disconnect %s?" +msgstr "Искате ли да забравите или да прекъснете връзката с %s?" + +#, python-format +msgid "Do you want to recover %s?" +msgstr "Искате ли да възстановите %s?" + +msgid "Elapsed:" +msgstr "Изминало:" + +msgid "Emergency Stop" +msgstr "Аварийно спиране" + +msgid "Enable screen power management" +msgstr "Активирайте управлението на захранването на екрана" + +msgid "Error" +msgstr "Грешка" + +msgid "Error clearing active spool" +msgstr "Грешка при изчистване на активния спул" + +msgid "Error getting active spool" +msgstr "Грешка при активиране на спула" + +msgid "Error setting active spool" +msgstr "Грешка при настройване на активен спул" + +msgid "Error trying to fetch spools" +msgstr "Грешка при опит за извличане на шпули" + +msgid "Error: Couldn't get a position to probe" +msgstr "Грешка: Не може да се намери позиция за сондиране" + +msgid "Estimated Time" +msgstr "Очаквано време" + +msgid "Estimated Time Method" +msgstr "Расчетно време" + +msgid "Example" +msgstr "Пример" + +msgid "Exclude Object" +msgstr "Изключване на обект" + +msgid "Extra Large" +msgstr "Много голям" + +msgid "Extrude" +msgstr "Екструзия" + +msgid "Extruders" +msgstr "Екструдери" + +msgid "Extrusion +" +msgstr "Екструзия +" + +msgid "Extrusion -" +msgstr "Екструзия -" + +msgid "Failed to delete connection" +msgstr "Неуспешно изтриване на връзката" + +msgid "Failed to initialize" +msgstr "Неуспешно инициализиране" + +msgid "Failed, adjust position first" +msgstr "Грешка. Първо сменете позицията" + +msgid "Fan" +msgstr "Охлаждане" + +msgid "Filament" +msgstr "Филамент" + +msgid "Filament Used" +msgstr "Използване на филамента" + +msgid "Filament total:" +msgstr "Общо нишка:" + +msgid "Filament used:" +msgstr "Използван филамент:" + +msgid "Filament:" +msgstr "Филамент:" + +msgid "File" +msgstr "Файл" + +msgid "File:" +msgstr "Файл:" + +msgid "Filter" +msgstr "Филтър" + +msgid "Finding ADXL" +msgstr "ADXL Търсене" + +msgid "Fine Tuning" +msgstr "Фина настройка" + +msgid "Finish" +msgstr "Край" + +msgid "Firmware Restart" +msgstr "Рестартиране на фърмуера" + +msgid "Flow:" +msgstr "Поток:" + +msgid "Flowrate:" +msgstr "Расход:" + +msgid "Font Size" +msgstr "Размер на шрифта" + +msgid "For mouse control or to verify touchscreen accuracy" +msgstr "За управление с мишка или за проверка на точността на сензорния екран" + +msgid "Forget" +msgstr "Забравете" + +msgid "Full Update" +msgstr "Пълна актуализация" + +msgid "Gcodes" +msgstr "Gcodes" + +msgid "Getting IP address" +msgstr "Получаване на IP адрес" + +msgid "Go Back" +msgstr "Назад" + +msgid "Height:" +msgstr "Височина:" + +msgid "Hide" +msgstr "Скрий" + +msgid "Hide sensors in Temp." +msgstr "Скрий датчиците в Temp." + +msgid "Home" +msgstr "Паркирай X" + +msgid "Home All" +msgstr "Паркирай всички" + +msgid "Home X" +msgstr "Паркирай X" + +msgid "Home XY" +msgstr "Паркирай XY" + +msgid "Home Y" +msgstr "Паркирай Y" + +msgid "Home Z" +msgstr "Паркирай Z" + +msgid "Host" +msgstr "Хост" + +msgid "Hostname" +msgstr "Име на хоста" + +msgid "ID" +msgstr "ID" + +msgid "Icon Theme" +msgstr "Тема" + +msgid "Initializing printer..." +msgstr "Принтера стартира..." + +msgid "Initiate a PID calibration for:" +msgstr "Започнете PID калибриране за:" + +msgid "Input Shaper" +msgstr "Входен шейпер" + +msgid "Insufficient privileges" +msgstr "Недостатъчни привилегии" + +msgid "Interface" +msgstr "Интерфейс" + +msgid "Invalid" +msgstr "Неправилно" + +msgid "Invalid password" +msgstr "Грешна парола" + +msgid "Invalid temperature" +msgstr "Невалидна температура" + +msgid "Inversely affects the icon size" +msgstr "Обратно влияе върху размера на иконата" + +msgid "Invert X" +msgstr "Инверсиране X" + +msgid "Invert Y" +msgstr "Инверсиране Y" + +msgid "Invert Z" +msgstr "Инверсиране Z" + +msgid "It may take more than 5 minutes depending on the heater power." +msgstr "" +"Може да отнеме повече от 5 минути в зависимост от мощността на нагревателя." + +msgid "It's possible that the configuration is not correct" +msgstr "Възможно е конфигурацията да не е правилна" + +msgid "Job Status" +msgstr "Статус на работа" + +msgid "Klipper Restart" +msgstr "Klipper Рестарт" + +msgid "Klipper has disconnected" +msgstr "Няма връзка с Klipper" + +msgid "Klipper has encountered an error." +msgstr "Klipper откри грешка." + +msgid "Klipper has shutdown" +msgstr "Klipper се изключи" + +msgid "Klipper is attempting to start" +msgstr "Klipper е готов" + +msgid "Klipper will reboot" +msgstr "Klipper се рестартира" + +msgid "" +"LOAD_FILAMENT/UNLOAD_FILAMENT are hidden and should be used from extrude" +msgstr "" +"LOAD_FILAMENT/UNLOAD_FILAMENT са скрити и трябва да се използват от " +"екструдиране" + +msgid "Language" +msgstr "Език" + +msgid "Large" +msgstr "Голям" + +msgid "Last Duration" +msgstr "Ретракт" + +msgid "Last Used" +msgstr "Използване на филамента" + +msgid "Layer Height" +msgstr "Височина на слоя" + +msgid "Layer:" +msgstr "Слой:" + +msgid "Leds" +msgstr "LEDs" + +msgid "Left:" +msgstr "Остава:" + +msgid "Limits" +msgstr "Лимити" + +msgid "Load" +msgstr "Зареди" + +msgid "Loading..." +msgstr "Зареждане..." + +msgid "Lost Connection to Moonraker" +msgstr "Не може да се свърже с Moonraker" + +msgid "Lower Nozzle" +msgstr "Спусни дюзата" + +msgid "Macro shortcut on sidebar" +msgstr "Покажи макроси в панела" + +msgid "Macros" +msgstr "Макроси" + +msgid "Main Menu" +msgstr "Главно меню" + +msgid "Material" +msgstr "Материал" + +msgid "Max" +msgstr "Макс" + +msgid "Max Acceleration" +msgstr "Максимално ускорение" + +msgid "Max Velocity" +msgstr "Скорост" + +msgid "Max:" +msgstr "Макс:" + +msgid "Maximum" +msgstr "Максимум" + +msgid "Measure Both" +msgstr "Измерете и двете" + +msgid "Measure X" +msgstr "Измерете X" + +msgid "Measure Y" +msgstr "Измерете Y" + +msgid "Medium" +msgstr "Средно" + +msgid "Memory" +msgstr "Памет" + +msgid "Menu" +msgstr "Меню" + +msgid "Minimum Cruise Ratio" +msgstr "Минимално круизно съотношение" + +msgid "Minimum:" +msgstr "Минимум:" + +msgid "Modified" +msgstr "Променено" + +msgid "Moonraker: connected" +msgstr "Moonraker: Свързан" + +msgid "More" +msgstr "Повече" + +msgid "Move" +msgstr "Ход" + +msgid "Move Distance (mm)" +msgstr "Дистанция на движение (мм)" + +msgid "Name" +msgstr "Име" + +msgid "Network" +msgstr "Мрежа" + +msgid "Network connected" +msgstr "Мрежата е свързана" + +msgid "Network disconnected" +msgstr "Няма връзка с мрежата" + +msgid "Network not found" +msgstr "Мрежата не е намерена" + +msgid "Never" +msgstr "Никога" + +msgid "New" +msgstr "Нов" + +msgid "No elegible macros:" +msgstr "Няма избираеми макроси:" + +msgid "No info available" +msgstr "Няма налична информация" + +msgid "No mesh has been loaded" +msgstr "Не е заредена мрежа" + +msgid "No wireless interface has been found" +msgstr "Не е открит безжичен интерфейс" + +msgid "Not all screens support this" +msgstr "Не всички екрани поддържат това" + +msgid "Not working or not configured" +msgstr "Не работи или не е конфигуриран" + +msgid "Nothing selected" +msgstr "Нищо не е избрано" + +msgid "Notification log empty" +msgstr "Дневникът на известията е празен" + +msgid "Notifications" +msgstr "Известия" + +msgid "Nozzle diameter" +msgstr "Диаметър на дюзата" + +msgid "Only for the move panel" +msgstr "Само за панела за движение" + +#, python-format +msgid "Outdated by %d" +msgstr "Остарял на %d" + +msgid "Package will be updated" +msgid_plural "Packages will be updated" +msgstr[0] "Пакета ще бъде обновен" +msgstr[1] "Пакетите ще бъдат обновени" + +msgid "Part Fan" +msgstr "Частичен вентилатор" + +msgid "Password" +msgstr "Паролата" + +msgid "Password saved" +msgstr "Паролата е записана" + +msgid "Pause" +msgstr "Пауза" + +msgid "Paused" +msgstr "Спряно" + +msgid "Perform a full upgrade?" +msgstr "Пълна актуализация?" + +msgid "Pins" +msgstr "Пинове" + +msgid "Please recompile and flash the micro-controller." +msgstr "Моля, прекомпилирайте и флашнете микроконтролера." + +msgid "Please wait" +msgstr "Моля изчакайте" + +msgid "Power" +msgstr "Изк. принтера" + +msgid "Power On Printer" +msgstr "Вкл. принтера" + +msgid "Pressure Advance" +msgstr "Предварително налягане" + +msgid "Pressure Advance:" +msgstr "Предварително налягане:" + +msgid "Pressure advance" +msgstr "Предварително налягане" + +msgid "Print" +msgstr "Печат" + +msgid "Print Control" +msgstr "Контрол на печата" + +msgid "Printer" +msgstr "Принтер" + +msgid "Printer Connections" +msgstr "Свързване на принтер" + +msgid "Printer Select" +msgstr "Избор на принтер" + +msgid "Printing" +msgstr "Печатане" + +msgid "Probe Offset" +msgstr "Отместване на сондата" + +msgid "Profile Name:" +msgstr "Име на профила:" + +msgid "Provide KlipperScreen.log when asking for help.\n" +msgstr "Осигурете KlipperScreen.log, когато поискате помощ.\n" + +msgid "Quad Gantry Level" +msgstr "Ниво Quad Gantry" + +msgid "Raise Nozzle" +msgstr "Повдигнете дюзата" + +msgid "Recover" +msgstr "Възстановяване" + +msgid "Recover Hard" +msgstr "Възстановяване Hard" + +msgid "Recover Soft" +msgstr "Възстановяване Soft" + +msgid "Reference" +msgstr "Връзка" + +msgid "Refresh" +msgstr "Опресняване" + +msgid "Remove network" +msgstr "Премахване на мрежата" + +msgid "Rename/Move:" +msgstr "Преименуване/Преместване:" + +msgid "Restart" +msgstr "Рестарт" + +msgid "Resume" +msgstr "Продължи" + +msgid "Retract" +msgstr "Ретракт" + +msgid "Retraction" +msgstr "Ретракт" + +msgid "Retraction Length" +msgstr "Дължина на ретракта" + +msgid "Retraction Speed" +msgstr "Скорост на ретракта" + +msgid "Retry" +msgstr "Повтори" + +msgid "Retrying" +msgstr "Повторен опит" + +msgid "Rotation invalid" +msgstr "Завъртането е невалидно" + +msgid "Save" +msgstr "Запиши" + +msgid "Save Config" +msgstr "Зап. Конфиг" + +msgid "Save Z" +msgstr "Запиши Z" + +msgid "Save configuration?" +msgstr "Запиши конфигурацията?" + +msgid "Saved" +msgstr "Записано" + +#, python-format +msgid "Saved offset: %s" +msgstr "Записан офсет: %s" + +msgid "Screen DPMS" +msgstr "Екран DPMS" + +msgid "Screen Power Off Time" +msgstr "Време за изключване на екрана" + +msgid "Screws Adjust" +msgstr "Настройки на винтовете" + +msgid "Screws not used:" +msgstr "Неизползвани винтове:" + +msgid "Send" +msgstr "Изпрати" + +msgid "Set Temp" +msgstr "Задайте температура" + +msgid "Settings" +msgstr "Настройки" + +msgid "Show" +msgstr "Покажи" + +msgid "Show Heater Power" +msgstr "Показване на мощността на нагревателя" + +msgid "Show Scrollbars Buttons" +msgstr "Показване на бутони за ленти за превъртане" + +msgid "Show cursor" +msgstr "Показване на курсора" + +msgid "Show only devices that are able to be set" +msgstr "Показване само на устройства, които могат да бъдат настроени" + +msgid "Shutdown" +msgstr "Изключване" + +msgid "Size" +msgstr "Размер" + +msgid "Slicer" +msgstr "Слайсер" + +msgid "Slicer:" +msgstr "Слайсер:" + +msgid "Small" +msgstr "Малък" + +msgid "Smooth time" +msgstr "Гладко време" + +msgid "Speed (mm/s)" +msgstr "Скорост (мм/с)" + +msgid "Speed +" +msgstr "Скорост +" + +msgid "Speed -" +msgstr "Скорост -" + +msgid "Speed:" +msgstr "Скорост:" + +msgid "Square Corner Velocity" +msgstr "Квадратна ъглова скорост" + +msgid "Standby" +msgstr "В режим на готовност" + +msgid "Start" +msgstr "Старт" + +msgid "Starting recovery for" +msgstr "Започнете възстановяване за" + +msgid "Starting update for" +msgstr "Стартиране на актуализация за" + +msgid "Swaps buttons if they are on top of each other, affects other panels" +msgstr "Разменя бутоните, ако са един върху друг, засяга други панели" + +msgid "System" +msgstr "Система" + +msgid "System Restart" +msgstr "Рестартиране на системата" + +msgid "System Shutdown" +msgstr "Изключване на системата" + +msgid "System:" +msgstr "Система:" + +msgid "Temp (°C)" +msgstr "Темп (°С)" + +msgid "Temperature" +msgstr "Tемпература" + +msgid "Temperature too low to extrude" +msgstr "Температурата е твърде ниска за екструдиране" + +msgid "The system doesn't meet the minimum requirement" +msgstr "Системата не отговаря на минималните изисквания" + +msgid "This panel supports up-to 9 screws in a 3x3 Grid" +msgstr "Този панел поддържа до 9 винта в мрежа 3x3" + +msgid "This will affect screw positions and mesh graph" +msgstr "Това ще повлияе на позициите на винтовете и графиката на мрежата" + +msgid "Timeout for screen black-out or power-off" +msgstr "Време за изчакване за затъмняване на екрана или изключване" + +msgid "Timeout for screen black-out or power-off during printing" +msgstr "" +"Изчакване за затъмняване на екрана или изключване на захранването по време " +"на печат" + +msgid "Total:" +msgstr "Всичко:" + +msgid "Unknown Heater" +msgstr "Неизвестен нагревател" + +msgid "Unknown security type" +msgstr "Неизвестен тип защита" + +msgid "Unload" +msgstr "Извади" + +msgid "Unretract Extra Length" +msgstr "Отмяна на прибиране на допълнителната дължина" + +msgid "Unretract Speed" +msgstr "Скорост на оттегляне" + +msgid "Up To Date" +msgstr "Актуално" + +msgid "Update" +msgstr "Обнови" + +msgid "Updating" +msgstr "Обновяване" + +msgid "Useful for un-responsive touchscreens" +msgstr "Полезно за неотзивчиви сензорни екрани" + +msgid "User" +msgstr "Потребител" + +msgid "WebRTC is not supported by the backend trying Stream" +msgstr "WebRTC не се поддържа от бекенда, опитващ Stream" + +msgid "Working" +msgstr "Работещ" + +msgid "XY Move Speed (mm/s)" +msgstr "Скорост по оси XY (мм/с)" + +msgid "XY Speed (mm/s)" +msgstr "XY скорост (mm/s)" + +msgid "Z Calibrate" +msgstr "Калибр. Z" + +msgid "Z Move Speed (mm/s)" +msgstr "Скорост по ос Z (мм/с)" + +msgid "Z Speed (mm/s)" +msgstr "Z скорост (mm/s)" + +msgid "Z Tilt" +msgstr "Z Наклон" + +msgid "Z offset:" +msgstr "Z отместване:" + +msgid "commit" +msgid_plural "commits" +msgstr[0] "промяна" +msgstr[1] "промяна" + +msgid "day" +msgid_plural "days" +msgstr[0] "ден" +msgstr[1] "дни" + +msgid "g" +msgstr "г" + +msgid "hour" +msgid_plural "hours" +msgstr[0] "час" +msgstr[1] "часа" + +msgid "macros that use 'rename_existing' are hidden" +msgstr "макросите, които използват 'rename_existing' са скрити" + +msgid "macros with a name starting with '_' are hidden" +msgstr "макросите с име, започващо с '_' са скрити" + +msgid "minute" +msgid_plural "minutes" +msgstr[0] "минута" +msgstr[1] "минути" + +msgid "mm" +msgstr "мм" + +msgid "mm/s" +msgstr "мм/с" + +msgid "mm/s²" +msgstr "мм/с²" + +msgid "mm³/s" +msgstr "мм³/s" + +msgid "s" +msgstr "с" + +msgid "second" +msgid_plural "seconds" +msgstr[0] "секунда" +msgstr[1] "секунди" + +#~ msgid "Hide temp." +#~ msgstr "Скрий температурата." + +#~ msgid "PSK for" +#~ msgstr "PSK за" + +#~ msgid "Actions" +#~ msgstr "Действия" + +#~ msgid "Bed screw configuration:" +#~ msgstr "Конфигурация на винта на леглото:" + +#~ msgid "Calibrated, save configuration to make it permanent" +#~ msgstr "Калибриран, запазете конфигурацията, за да стане постоянна" + +#~ msgid "Configuration" +#~ msgstr "Конфигурация" + +#~ msgid "Continue" +#~ msgstr "Продължи" + +#~ msgid "Decrease" +#~ msgstr "Намали" + +#~ msgid "Deselect" +#~ msgstr "Отмени" + +#~ msgid "Disable XY" +#~ msgstr "Изключи XY" + +#~ msgid "Hidden" +#~ msgstr "Скрит" + +#~ msgid "Homing" +#~ msgstr "Паркирай" + +#~ msgid "Increase" +#~ msgstr "Повдигане" + +#~ msgid "KlipperScreen will reboot" +#~ msgstr "KlipperScreen ще се рестартира" + +#~ msgid "Max Acceleration to Deceleration" +#~ msgstr "Ускорение на забавяне" + +#~ msgid "Mesh calibrate" +#~ msgstr "Калибриране на мрежата" + +#~ msgid "" +#~ "Not supported for auto-detection, it needs to be configured in " +#~ "klipperscreen.conf" +#~ msgstr "" +#~ "Не се поддържа за автоматично откриване, трябва да се конфигурира в " +#~ "klipperscreen.conf" + +#~ msgid "Print Time" +#~ msgstr "Време за печат" + +#~ msgid "Select" +#~ msgstr "Избери" + +#~ msgid "Sending Power ON signal to: %s" +#~ msgstr "Изпращане на сигнал за включване до: %s" + +#~ msgid "Slicer Time correction (%)" +#~ msgstr "Корекция на времето на слайсера (%)" + +#~ msgid "Starting WiFi Association" +#~ msgstr "Сдвояване" + +#~ msgid "Unknown screw position" +#~ msgstr "Неизвестна позиция на винта" + +#~ msgid "Uploaded" +#~ msgstr "Качено" + +#~ msgid "dBm" +#~ msgstr "dBm" From a92be75c48b732842ae2c776c6e8c551a60576b9 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Tue, 26 Nov 2024 11:57:43 -0300 Subject: [PATCH 19/21] refactor: optimize imports --- ks_includes/KlippyGtk.py | 1 + ks_includes/KlippyRest.py | 1 + ks_includes/KlippyWebsocket.py | 2 +- ks_includes/config.py | 11 +++++------ ks_includes/files.py | 1 + ks_includes/functions.py | 7 ++----- ks_includes/printer.py | 1 + ks_includes/screen_panel.py | 3 ++- ks_includes/sdbus_nm.py | 5 ++--- ks_includes/widgets/bedmap.py | 1 - ks_includes/widgets/heatergraph.py | 1 - ks_includes/widgets/keyboard.py | 1 - ks_includes/widgets/lockscreen.py | 1 + ks_includes/widgets/prompts.py | 1 + ks_includes/widgets/screensaver.py | 1 + panels/base_panel.py | 1 + panels/bed_level.py | 3 ++- panels/bed_mesh.py | 1 + panels/camera.py | 3 ++- panels/console.py | 3 ++- panels/exclude.py | 1 + panels/extrude.py | 1 + panels/fan.py | 1 + panels/fine_tune.py | 1 + panels/gcode_macros.py | 1 + panels/gcodes.py | 1 + panels/input_shaper.py | 1 + panels/job_status.py | 1 + panels/led.py | 1 + panels/limits.py | 1 + panels/main_menu.py | 1 + panels/menu.py | 3 ++- panels/move.py | 3 ++- panels/network.py | 2 +- panels/pins.py | 1 + panels/power.py | 1 + panels/pressure_advance.py | 3 ++- panels/printer_select.py | 3 ++- panels/retraction.py | 1 + panels/shutdown.py | 1 + panels/splash_screen.py | 1 + panels/spoolman.py | 3 ++- panels/system.py | 1 + panels/temperature.py | 1 + panels/zcalibrate.py | 2 +- 45 files changed, 57 insertions(+), 29 deletions(-) diff --git a/ks_includes/KlippyGtk.py b/ks_includes/KlippyGtk.py index 0130389f5..ecabc8071 100644 --- a/ks_includes/KlippyGtk.py +++ b/ks_includes/KlippyGtk.py @@ -2,6 +2,7 @@ import logging import os import pathlib + import gi gi.require_version("Gtk", "3.0") diff --git a/ks_includes/KlippyRest.py b/ks_includes/KlippyRest.py index 2234f670c..ca7da1283 100644 --- a/ks_includes/KlippyRest.py +++ b/ks_includes/KlippyRest.py @@ -1,5 +1,6 @@ import logging import re + import requests diff --git a/ks_includes/KlippyWebsocket.py b/ks_includes/KlippyWebsocket.py index 24748e76e..f5e5cb575 100644 --- a/ks_includes/KlippyWebsocket.py +++ b/ks_includes/KlippyWebsocket.py @@ -1,8 +1,8 @@ #!/usr/bin/python -import threading import json import logging +import threading import gi import websocket diff --git a/ks_includes/config.py b/ks_includes/config.py index 91167fd81..b7f9068ce 100644 --- a/ks_includes/config.py +++ b/ks_includes/config.py @@ -1,13 +1,12 @@ import configparser +import copy import gettext -import os -import logging import json -import re -import copy -import pathlib import locale - +import logging +import os +import pathlib +import re from io import StringIO SCREEN_BLANKING_OPTIONS = [ diff --git a/ks_includes/files.py b/ks_includes/files.py index 00fbd7484..eab6c93e2 100644 --- a/ks_includes/files.py +++ b/ks_includes/files.py @@ -1,5 +1,6 @@ import logging import os + import gi gi.require_version("Gtk", "3.0") diff --git a/ks_includes/functions.py b/ks_includes/functions.py index aa97f1029..514921df2 100644 --- a/ks_includes/functions.py +++ b/ks_includes/functions.py @@ -1,17 +1,14 @@ +import ctypes import logging import logging.handlers import os -import re +import struct import subprocess import sys import threading -import time import traceback from queue import SimpleQueue as Queue -import ctypes -import struct - dpms_loaded = False try: ctypes.cdll.LoadLibrary('libXext.so.6') diff --git a/ks_includes/printer.py b/ks_includes/printer.py index fa46e805b..9265ca13b 100644 --- a/ks_includes/printer.py +++ b/ks_includes/printer.py @@ -1,4 +1,5 @@ import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/ks_includes/screen_panel.py b/ks_includes/screen_panel.py index a5b01c11b..f753be1b5 100644 --- a/ks_includes/screen_panel.py +++ b/ks_includes/screen_panel.py @@ -1,5 +1,6 @@ -import logging import datetime +import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/ks_includes/sdbus_nm.py b/ks_includes/sdbus_nm.py index 9226b768f..e0e148b4b 100644 --- a/ks_includes/sdbus_nm.py +++ b/ks_includes/sdbus_nm.py @@ -1,8 +1,9 @@ # This is the backend of the UI panel that communicates to sdbus-networkmanager # TODO device selection/swtichability # Alfredo Monclus (alfrix) 2024 -import subprocess import logging +import subprocess +from uuid import uuid4 import sdbus from sdbus_block.networkmanager import ( @@ -18,8 +19,6 @@ enums, exceptions, ) -from gi.repository import GLib -from uuid import uuid4 NONE = 0 # The access point has no special security requirements. PAIR_WEP40 = 1 # 40/64-bit WEP is supported for pairwise/unicast encryption. diff --git a/ks_includes/widgets/bedmap.py b/ks_includes/widgets/bedmap.py index 1da45561a..8f7ec4063 100644 --- a/ks_includes/widgets/bedmap.py +++ b/ks_includes/widgets/bedmap.py @@ -1,4 +1,3 @@ -import logging import gi gi.require_version("Gtk", "3.0") diff --git a/ks_includes/widgets/heatergraph.py b/ks_includes/widgets/heatergraph.py index 3883a4391..9cd24a105 100644 --- a/ks_includes/widgets/heatergraph.py +++ b/ks_includes/widgets/heatergraph.py @@ -1,7 +1,6 @@ import datetime import logging import math -from array import array import gi diff --git a/ks_includes/widgets/keyboard.py b/ks_includes/widgets/keyboard.py index ad8d4df40..580a78b67 100644 --- a/ks_includes/widgets/keyboard.py +++ b/ks_includes/widgets/keyboard.py @@ -1,4 +1,3 @@ -import logging import os import gi diff --git a/ks_includes/widgets/lockscreen.py b/ks_includes/widgets/lockscreen.py index 3ac4eb305..4b201a92a 100644 --- a/ks_includes/widgets/lockscreen.py +++ b/ks_includes/widgets/lockscreen.py @@ -1,4 +1,5 @@ import logging + import gi gi.require_version('Gtk', '3.0') diff --git a/ks_includes/widgets/prompts.py b/ks_includes/widgets/prompts.py index 752b966ad..11c464e26 100644 --- a/ks_includes/widgets/prompts.py +++ b/ks_includes/widgets/prompts.py @@ -1,4 +1,5 @@ import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/ks_includes/widgets/screensaver.py b/ks_includes/widgets/screensaver.py index 9eacd0c71..64ceb0183 100644 --- a/ks_includes/widgets/screensaver.py +++ b/ks_includes/widgets/screensaver.py @@ -1,4 +1,5 @@ import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/base_panel.py b/panels/base_panel.py index 6f838d91f..0b7954533 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/bed_level.py b/panels/bed_level.py index 9820b8890..81f7c5110 100644 --- a/panels/bed_level.py +++ b/panels/bed_level.py @@ -1,6 +1,7 @@ import logging -import re import math +import re + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/bed_mesh.py b/panels/bed_mesh.py index 99c55cd5d..dd63ed25b 100644 --- a/panels/bed_mesh.py +++ b/panels/bed_mesh.py @@ -1,5 +1,6 @@ import contextlib import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/camera.py b/panels/camera.py index f88465743..b41e3a80d 100644 --- a/panels/camera.py +++ b/panels/camera.py @@ -1,5 +1,6 @@ -import mpv import logging +import mpv + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/console.py b/panels/console.py index 6fbe631cd..a30e26615 100644 --- a/panels/console.py +++ b/panels/console.py @@ -1,5 +1,6 @@ -import time import re +import time + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/exclude.py b/panels/exclude.py index ebece6e45..f4d0314a3 100644 --- a/panels/exclude.py +++ b/panels/exclude.py @@ -1,4 +1,5 @@ import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/extrude.py b/panels/extrude.py index 75dea68ec..c52fa8c03 100644 --- a/panels/extrude.py +++ b/panels/extrude.py @@ -1,5 +1,6 @@ import logging import re + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/fan.py b/panels/fan.py index 8e1abe321..93b5c2d76 100644 --- a/panels/fan.py +++ b/panels/fan.py @@ -1,4 +1,5 @@ import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/fine_tune.py b/panels/fine_tune.py index 7d48f2c3a..0ab43644a 100644 --- a/panels/fine_tune.py +++ b/panels/fine_tune.py @@ -1,5 +1,6 @@ import logging import re + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/gcode_macros.py b/panels/gcode_macros.py index 50f11bf0c..f7e6efb77 100644 --- a/panels/gcode_macros.py +++ b/panels/gcode_macros.py @@ -1,5 +1,6 @@ import logging import re + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/gcodes.py b/panels/gcodes.py index b45e0bace..1ead19986 100644 --- a/panels/gcodes.py +++ b/panels/gcodes.py @@ -1,5 +1,6 @@ import logging import os + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/input_shaper.py b/panels/input_shaper.py index e5c3bd7d1..871a431b3 100644 --- a/panels/input_shaper.py +++ b/panels/input_shaper.py @@ -1,4 +1,5 @@ import re + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/job_status.py b/panels/job_status.py index 0c2a5d87b..b8b92fe07 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import logging import os + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/led.py b/panels/led.py index ee7d5e592..12c4a17ed 100644 --- a/panels/led.py +++ b/panels/led.py @@ -1,4 +1,5 @@ import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/limits.py b/panels/limits.py index 91501b8c1..b8c8f8c88 100644 --- a/panels/limits.py +++ b/panels/limits.py @@ -1,4 +1,5 @@ import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/main_menu.py b/panels/main_menu.py index d2cce29c0..1f138245a 100644 --- a/panels/main_menu.py +++ b/panels/main_menu.py @@ -1,4 +1,5 @@ import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/menu.py b/panels/menu.py index 2980534ba..574047aaf 100644 --- a/panels/menu.py +++ b/panels/menu.py @@ -1,5 +1,6 @@ -import logging import json +import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/move.py b/panels/move.py index 7814039d2..3cb285b42 100644 --- a/panels/move.py +++ b/panels/move.py @@ -1,5 +1,6 @@ -import re import logging +import re + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/network.py b/panels/network.py index 68a68c8c6..469e98db6 100644 --- a/panels/network.py +++ b/panels/network.py @@ -1,6 +1,6 @@ -import subprocess import logging import os + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/pins.py b/panels/pins.py index 0e2cef3b8..88f3593e0 100644 --- a/panels/pins.py +++ b/panels/pins.py @@ -1,4 +1,5 @@ import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/power.py b/panels/power.py index a1c9255b3..141525f8a 100644 --- a/panels/power.py +++ b/panels/power.py @@ -1,4 +1,5 @@ import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/pressure_advance.py b/panels/pressure_advance.py index a478d9dfa..d4de88e60 100644 --- a/panels/pressure_advance.py +++ b/panels/pressure_advance.py @@ -1,8 +1,9 @@ import logging + import gi gi.require_version("Gtk", "3.0") -from gi.repository import Gtk, Pango +from gi.repository import Gtk from ks_includes.screen_panel import ScreenPanel # TODO multi-extruder support diff --git a/panels/printer_select.py b/panels/printer_select.py index cce2c4e9b..087bbc994 100644 --- a/panels/printer_select.py +++ b/panels/printer_select.py @@ -1,8 +1,9 @@ import logging + import gi gi.require_version("Gtk", "3.0") -from gi.repository import Gtk, GLib +from gi.repository import Gtk from ks_includes.screen_panel import ScreenPanel from ks_includes.widgets.autogrid import AutoGrid from ks_includes.KlippyGtk import find_widget diff --git a/panels/retraction.py b/panels/retraction.py index ddefc43bb..22466572c 100644 --- a/panels/retraction.py +++ b/panels/retraction.py @@ -1,4 +1,5 @@ import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/shutdown.py b/panels/shutdown.py index 08ef1423b..ead13036d 100644 --- a/panels/shutdown.py +++ b/panels/shutdown.py @@ -1,5 +1,6 @@ import logging import os + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/splash_screen.py b/panels/splash_screen.py index 100531d16..8349855b8 100644 --- a/panels/splash_screen.py +++ b/panels/splash_screen.py @@ -1,5 +1,6 @@ import logging import os + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/spoolman.py b/panels/spoolman.py index c8da2cb41..20ec3f668 100644 --- a/panels/spoolman.py +++ b/panels/spoolman.py @@ -1,6 +1,7 @@ +import logging import os.path import pathlib -import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/system.py b/panels/system.py index 92d95296d..ae301b19d 100644 --- a/panels/system.py +++ b/panels/system.py @@ -1,4 +1,5 @@ import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/temperature.py b/panels/temperature.py index 1c6dacc88..a2774f64a 100644 --- a/panels/temperature.py +++ b/panels/temperature.py @@ -1,4 +1,5 @@ import logging + import gi gi.require_version("Gtk", "3.0") diff --git a/panels/zcalibrate.py b/panels/zcalibrate.py index 0d8d645de..410dde7c2 100644 --- a/panels/zcalibrate.py +++ b/panels/zcalibrate.py @@ -1,10 +1,10 @@ import logging + import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk, Pango, GLib from ks_includes.screen_panel import ScreenPanel -from ks_includes.KlippyGtk import find_widget from datetime import datetime From f187d73838fd19bc5ff8cd03da824fda0d2f7e71 Mon Sep 17 00:00:00 2001 From: Glought Date: Tue, 26 Nov 2024 07:00:56 -0800 Subject: [PATCH 20/21] feat(spoolman): Add Comment to Spools (#1511) Co-authored-by: Glought <663343+Glought@users.noreply.github.com> --- panels/spoolman.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/panels/spoolman.py b/panels/spoolman.py index 20ec3f668..3c3e6cb65 100644 --- a/panels/spoolman.py +++ b/panels/spoolman.py @@ -336,6 +336,8 @@ def _get_filament_formated(self, spool: SpoolmanSpool): result = f'{spool.name}\n' else: result = f'{spool.name}\n' + if hasattr(spool, "comment"): + result += f'{_("Comment")}: {spool.comment}\n' if spool.last_used: result += f'{_("Last used")}: {spool.last_used.astimezone():{self.timeFormat}}\n' if hasattr(spool, "remaining_weight"): From 7431ad82b8ae2a561a6e4e9ff41cbec48dcff958 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Tue, 26 Nov 2024 12:32:10 -0300 Subject: [PATCH 21/21] chore(locales): update translation base --- ks_includes/locales/KlipperScreen.pot | 11 +++++- .../locales/ar/LC_MESSAGES/KlipperScreen.mo | Bin 22084 -> 21986 bytes .../locales/ar/LC_MESSAGES/KlipperScreen.po | 19 ++++++---- .../locales/bg/LC_MESSAGES/KlipperScreen.po | 11 +++++- .../locales/cs/LC_MESSAGES/KlipperScreen.mo | Bin 18758 -> 18745 bytes .../locales/cs/LC_MESSAGES/KlipperScreen.po | 11 +++++- .../locales/da/LC_MESSAGES/KlipperScreen.mo | Bin 18249 -> 18168 bytes .../locales/da/LC_MESSAGES/KlipperScreen.po | 19 ++++++---- .../locales/de/LC_MESSAGES/KlipperScreen.mo | Bin 19033 -> 18960 bytes .../locales/de/LC_MESSAGES/KlipperScreen.po | 19 ++++++---- .../de_formal/LC_MESSAGES/KlipperScreen.mo | Bin 19118 -> 19040 bytes .../de_formal/LC_MESSAGES/KlipperScreen.po | 19 ++++++---- .../locales/en/LC_MESSAGES/KlipperScreen.po | 35 ++++++++++++++---- .../locales/es/LC_MESSAGES/KlipperScreen.mo | Bin 18988 -> 18990 bytes .../locales/es/LC_MESSAGES/KlipperScreen.po | 11 +++++- .../locales/et/LC_MESSAGES/KlipperScreen.mo | Bin 18509 -> 18441 bytes .../locales/et/LC_MESSAGES/KlipperScreen.po | 19 ++++++---- .../locales/fr/LC_MESSAGES/KlipperScreen.mo | Bin 19389 -> 19302 bytes .../locales/fr/LC_MESSAGES/KlipperScreen.po | 19 ++++++---- .../locales/he/LC_MESSAGES/KlipperScreen.mo | Bin 11896 -> 11806 bytes .../locales/he/LC_MESSAGES/KlipperScreen.po | 19 ++++++---- .../locales/hu/LC_MESSAGES/KlipperScreen.mo | Bin 19498 -> 19498 bytes .../locales/hu/LC_MESSAGES/KlipperScreen.po | 11 +++++- .../locales/it/LC_MESSAGES/KlipperScreen.mo | Bin 18872 -> 18872 bytes .../locales/it/LC_MESSAGES/KlipperScreen.po | 11 +++++- .../locales/jp/LC_MESSAGES/KlipperScreen.mo | Bin 18440 -> 18440 bytes .../locales/jp/LC_MESSAGES/KlipperScreen.po | 27 +++++++++----- .../locales/ko/LC_MESSAGES/KlipperScreen.mo | Bin 17345 -> 17253 bytes .../locales/ko/LC_MESSAGES/KlipperScreen.po | 19 ++++++---- .../locales/lt/LC_MESSAGES/KlipperScreen.mo | Bin 19243 -> 19226 bytes .../locales/lt/LC_MESSAGES/KlipperScreen.po | 15 ++++++-- .../locales/nl/LC_MESSAGES/KlipperScreen.mo | Bin 16805 -> 16791 bytes .../locales/nl/LC_MESSAGES/KlipperScreen.po | 11 +++++- .../locales/pl/LC_MESSAGES/KlipperScreen.mo | Bin 19470 -> 19477 bytes .../locales/pl/LC_MESSAGES/KlipperScreen.po | 11 +++++- .../locales/pt/LC_MESSAGES/KlipperScreen.mo | Bin 16334 -> 16255 bytes .../locales/pt/LC_MESSAGES/KlipperScreen.po | 19 ++++++---- .../pt_BR/LC_MESSAGES/KlipperScreen.mo | Bin 16579 -> 16480 bytes .../pt_BR/LC_MESSAGES/KlipperScreen.po | 19 ++++++---- .../locales/ru/LC_MESSAGES/KlipperScreen.mo | Bin 23334 -> 23393 bytes .../locales/ru/LC_MESSAGES/KlipperScreen.po | 24 +++++++----- .../locales/sl/LC_MESSAGES/KlipperScreen.mo | Bin 12990 -> 12920 bytes .../locales/sl/LC_MESSAGES/KlipperScreen.po | 19 ++++++---- .../locales/sv/LC_MESSAGES/KlipperScreen.mo | Bin 13701 -> 13629 bytes .../locales/sv/LC_MESSAGES/KlipperScreen.po | 19 ++++++---- .../locales/tr/LC_MESSAGES/KlipperScreen.mo | Bin 19199 -> 19203 bytes .../locales/tr/LC_MESSAGES/KlipperScreen.po | 11 +++++- .../locales/uk/LC_MESSAGES/KlipperScreen.po | 11 +++++- .../locales/vi/LC_MESSAGES/KlipperScreen.mo | Bin 18282 -> 18200 bytes .../locales/vi/LC_MESSAGES/KlipperScreen.po | 19 ++++++---- .../zh_CN/LC_MESSAGES/KlipperScreen.mo | Bin 18063 -> 18034 bytes .../zh_CN/LC_MESSAGES/KlipperScreen.po | 11 +++++- .../zh_TW/LC_MESSAGES/KlipperScreen.mo | Bin 17971 -> 17936 bytes .../zh_TW/LC_MESSAGES/KlipperScreen.po | 11 +++++- 54 files changed, 347 insertions(+), 133 deletions(-) diff --git a/ks_includes/locales/KlipperScreen.pot b/ks_includes/locales/KlipperScreen.pot index 81b1b540d..254378872 100644 --- a/ks_includes/locales/KlipperScreen.pot +++ b/ks_includes/locales/KlipperScreen.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-09 18:08-0300\n" +"POT-Creation-Date: 2024-11-26 12:31-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -499,6 +499,9 @@ msgstr "" msgid "Loading..." msgstr "" +msgid "Lock" +msgstr "" + msgid "Lost Connection to Moonraker" msgstr "" @@ -908,6 +911,12 @@ msgstr "" msgid "Unload" msgstr "" +msgid "Unlock" +msgstr "" + +msgid "Unlock failed" +msgstr "" + msgid "Unretract Extra Length" msgstr "" diff --git a/ks_includes/locales/ar/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/ar/LC_MESSAGES/KlipperScreen.mo index cf755b7774ec47b26311c995c34e68182180156b..d69737faac495f9433cc958874e95d74caabf210 100644 GIT binary patch delta 6925 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 B;OhVY diff --git a/ks_includes/locales/ar/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/ar/LC_MESSAGES/KlipperScreen.po index a95e6ae43..fbc2230fc 100644 --- a/ks_includes/locales/ar/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/ar/LC_MESSAGES/KlipperScreen.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-09 18:08-0300\n" +"POT-Creation-Date: 2024-11-26 12:31-0300\n" "PO-Revision-Date: 2024-08-14 14:09+0000\n" "Last-Translator: Rashid Al Haqbany \n" "Language-Team: Arabic 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 Clq#

\n" "Language-Team: Czech 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 diff --git a/ks_includes/locales/da/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/da/LC_MESSAGES/KlipperScreen.po index 6847ef8d1..0b054d8f8 100644 --- a/ks_includes/locales/da/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/da/LC_MESSAGES/KlipperScreen.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-09 18:08-0300\n" +"POT-Creation-Date: 2024-11-26 12:31-0300\n" "PO-Revision-Date: 2024-07-03 13:59+0000\n" "Last-Translator: srbjessen \n" "Language-Team: Danish 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 Qn`#E{@2spjoH@Y%cU^7G`v3p{ diff --git a/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.po index 7c4d6c0f2..f7be47492 100644 --- a/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-09 18:08-0300\n" +"POT-Creation-Date: 2024-11-26 12:31-0300\n" "PO-Revision-Date: 2024-09-07 00:09+0000\n" "Last-Translator: Leart Dukaj \n" "Language-Team: German 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 U5xzlDm3#7^4yzn?+mOir1J-A_WB>pF delta 6992 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 diff --git a/ks_includes/locales/de_formal/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/de_formal/LC_MESSAGES/KlipperScreen.po index e2355e593..6c3a535e3 100644 --- a/ks_includes/locales/de_formal/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/de_formal/LC_MESSAGES/KlipperScreen.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-09 18:08-0300\n" +"POT-Creation-Date: 2024-11-26 12:31-0300\n" "PO-Revision-Date: 2024-09-07 00:09+0000\n" "Last-Translator: Leart Dukaj \n" "Language-Team: German X&MQI2gm{g)(-_lVU`#X)V;qhmKjvqC#ba8bF%g)LnztCku^eM?J%(YO9p8eP z^tWLuc3~v;<2*c5XdIJFV~hcQ%uRlgi^(b?2-aXO?nfnf3PbTTR05-zhT}L3O|dai zkb%>20cxHPl~@^S1C@9ORu?;NMw=Lz#y~61#&$dLAjZ@0MZGY9+QC`$;Cq;b-yuIH zY>^wtkLmPFF%RodmFh&r=|*xkFE})`;K!JNW2ivC+3{N#OF!7>CNdMX&^&8Cs=O59SN#is8&NxNKwa*RDLMaVXlP;&DuH9DOY%CZq-Rh&ejAn8CDejn zpepw*YTkr>K8Y%Agx{D7Ohc{Ph)SRhHGeOr6W{E&123Z{_FGS4D*daRblX?ZNW)F2fRCdBbX$+2&bklv;t<}2 zBdCNXt)V4uKNhEUj=JTIs7gJLs>}dtop(z(|8yFk+Xpw%LqB-AJ0S}nr0++Stjl^B zwa|;GJ8~Sgvmw+ayo{>A6;y?;qAL3}YMpV^CI59f_0OR3Hv?KAX@z@xvr!XQq0X!V zRgsMtf?H4(X-2*G1S)VR>b>Vs0eVq^U$qXP<_+5ZkYfif;%pv#hzj&0sQvA7;{Di`w}%)O&l-gNIQ4)9AxXsP%87Dl%iGn|KD2xMK=ws692pvISA6!A?J4J}w}-HrwHpF)-J zO;iHIsLON>wexZ7AE=`Wxz`OGgZf@1qdqj*sP}xx z-R@rdybtx_5GsL-sD(#RJNpW?^9j^?|DqC!D|7p^Q5z{j#VJQemuE8#-SQ^X0*|2r zJ&AMh0A^x8D)430*^Z*#k12QOC!+cpwm%oO-rcApT7;@d1?n!;mQ#N9Sxx%l3oTx{1v}1zLs*yasiI8*m{$g5h`w`DmJ6 zhlVCz#cccrRjSYmcRU4kIkT)j)DA1`^M`G}!S(|f#PfZ&?_e?gPSi#(px*xrgK$kS$H+2m5dV5m;2d{iH<^TWy delta 2713 zcmXZe4NR3)9LMnkBo=SJfV^F$dj%6;DAX$=A##DsOI}bRlh8IViqkSgV7WAVvbn{a zHX2gVmMda4^L?~Po7t9WTSZxe(rVSLwqA6uB5F44`{Owq<8#h=&U60%^FN12j~$3O zavU?8v#kr_?3voP_VgfG1aoAwT z*P)O8CQQS<7=wLy2Oghq9Fsz0m;rvwHGYwc@hvdsPOQZ_xEqz=QM?5|MI|tV>39XF z;!TW2kKdR$oQay}MPH>LDfHqn>itpFnS1ixN|hjqIA%KymFg+f&R#)Xro*T+JZ;A>pepr= z^|JLx^fG=OlX22wH()kueh5|3)u^3^QI~t$n4JHUG&HdbmB2yNC3zK9(&MNdzlloh z9BRSOQI-1!HSfB8K8h-Bbb&Edn2K7r5tYD$sQEk4LwvK_4!nq(*k?V0Y4qQ)&j(S7 z4xtkK4wcByw*QCqU({d8xVznXF&Ifd5w(G2RHbI1quX9cBOTYE0zQHY&}r>Kopmqj z#R1I5K~zGc*2qG)ACF@@N8R#9RHdFpRpto`L!gZ*MY(TyDC@OFV>b<8?0lHCvU$!1X%{yuP1CAXyiy1t49~I~aRB5lG z0{xBJQT$SOfyt=xR8+tmRAPQqsq;}KUWTevBPwvabqA)>cb=f3zv~{Hf=5wj`yOWD zZ>Uf2q+)j=Kl$;(k>B80O(Q)cQA26`2rl6ZasAJ0_QgO0)=-`BGG- zwW!NekJ`aLRAmmL=DlV;jSBFw^?TI35mX{KQFkDz#Eku0lYtt~!&u^*5DhI@Z+!^o z(SICO!V{+h(eiYRph$DzI#Q&1n8Ow@aRYY}S0l^9EWvx0`saxLmi zwxJf>i@M$2_IWSr#Q{_TXHg3eVhVnV+WB?VdjFsjNhovsQ&Ah4hl*2*jxNty8oK4{ zQ46%80zHPe;~w;3A1d&9)Y%T9-j55q^Ak~hkL^!Ktv4HWL<>+AsX*O@`XKdJV*>-) zaSJN*ov594q7r!l^?~X|eJ{>n4PLU(v&-F`<)RWSK?PokTDJierwO%@ZK(febd^*8 zv0KUje_`eZ&cT8TE+B5iXgr0w3-6-77hj+f9I^fXP>D^ebOS9$1rDN)a0T9l58!y* zk9;&uw?jh{FX9aR8da*uDt9~?bvb=jKWc{+_W6CbAGZA#jNtiB+uwzL`W>i^o\n" "Language-Team: Spanish 2~<_p9>?*GGAmBVAc)||EC`ASnx!~l4yn0PE9DW9f=Hr;Wu6Aj%vto6W=>Dd zq13uB%hK{$4w2emHkz54P3BaY6Z*ctdp2uzR)0Qw?{oI_Kl@%-c4&dmtOY*K@g}}Y z3|BWFW16FHurXUHp9xi~F&mB`eO>#!%VD; z-BHi=#8_h-(~p8C7>j{86Vq@3rr>T&#@{gko3TpOdtfS-p%$_neQ^&q!2KABpCfBD z=THj?W-@Ig90Qr(#8FVkM0=w>k_3~D>d+IllR?NBX1J|apfd3YYQUMOehZPcn&rq2 z&6}u=e2D?**TR^_7=mq>-^5Z-O7g7v$bV)qKa`OP7><>wiRPmwT8fQuEo#8mQ4{P( z_4^2$;+MAlcWg=hFI46tlz;8K7X|GwA2rY&sGSv}Qdy2H-Z-dr=S&eLLI_eQ3KqA&2SuQpy{Xy zW}_Cc1nc4oR3_G-`gu?j?nY&5uWdhs>i@O%6#6s2IjaKxh3a@6l>wi2?nL3%SX6rg z>bY*#9;h?Z$JR%pCLWFYI2WV(O|kWP=tq4OI@-Z{3QF-N`@lP>v+yyt!Jko?35j<< zK1rw@_eFg%jX=GEa@4118mj+1)Td}YrsM0V%$>IF=i+()TFDI>{LweT?N|@B!`7&d z38+uW2-NdMs0EZ*r=oT`*Vb2}p4*06*mexS_fZ=?h+5c*1o9t9;T#Qmcb8Ee{1V-X zLs0|gq3#by4OD3BCDuv|qJ0MH{(RH~&!PIQx9uL(M&GveJq`sOzG~D&M^QWb3AKaE zs0H4z?Ey({W+G7;i9rpRh}u~?s$U*zoP5-Cqfp-)#i$KFX74+*DJa#;Q4_7UZnEtj z)WY6Gz0+!BE#@TZ`TEIj|1i`-qEH!ViCRb^*26SZCUQ~t`?@-2Fa>qI3w4-A+Xo&( z4KNM0^697@F2g+Bg6j7ND%Dp}hc76_ouC;8Q*Vj&Fa^^v8+E20@YZ?%ODSkaA7B^! z12u4JsylE;)B<{<+DD)kItDf2!>Ea7+WU)8nOTZ$aSe9F1E`(XpgxX%?dh-2e-s6+ zFbTE8ENp=J=$#OQsE@Jj<4_Y!K_7e)wSei!+Rc2_PIqDhJcD)c8tPTwK#g0Mha44x zDQKX^s1Bj{5)G|Tzn-hfmlpUV>iz{J+s1To&qNApL3yZ!3_$JlF07AZP_J^lZLdJS z{>`Hu`26el@k;yPF4ViJ#?E*R^-3}`-1>OTqP`AUn>mKDSU=O9I0f~U-5E9R9hig@ zFcg=e7Ptkqp&gm_^S{^LIE*3O_zJbtpHMrwg!*N41GUo_UT7$`Lk*OJ+G%gp#6wYk zcsz&+I2VeYjf8|a^jkCo1 zBI+x99csaQkl*O$LsW*(+IAeA-%tyYtx*$pK%J3cs53JO)o(3&|Nh@bp$QE;un`_aP5dqDV|M|ygKMaFs1vCL z`J*xwf?8NKDwD~mPfaH3`GKen4YL-Y`j@G$&;Mi!dPh%U7|uqmaJ6lJ1-*v{mAaj% z1$~3c#0k`Zzo8az(blh8eRACA15wY1puP_x(a}4Orl5h7Fb?~nb~X-m_$pBo%tcMG z7}ak%w!_V+OnquSW<8DlX+MuTD_wK#xY&$(WiIbu?|u;t;kX5LX!c?ho^d6KbIz>#nZkUmf<-&>TNQ?fe2p;!V`fBfGh& zi$x8Tgn9*;s0C)D&d@;Acm=3eScW=NkDw-=ZC!#IXQe|yE8T!f?G{ufwxb3(gnIBR z)I=vy6JJI>UxPZVez&;o%~0dDK()6)r8*n6kRhlA7NY+2bIK`1P?%(I%t0++De4t$ zL+=-d^(<=O#@*cowM8AOTvU5+ROUvaUP%S&jLbm2s+UojdK=k@V-8bLijQD4evR7M zCDb?74b+O$Zgn%!6}6*Ys0@up-7i7yuo5-iEL&fI8gDgffg4fJ@4{f_H`U$(e|n)- zcmfmf9BQSJx49jXQ3GeAp6hNMh)VfAs7w^1&QKXDlT%R>R-yW@LVaJngpHWryg@;) z;DGf6YJkhA6#DmYS00Hv3n{1+cS21#5S5V;sEkygKDG{O;>8$)t5Ij@T~z<0=xF6< zDJV66qE;B#)3qV$m4u@@WMB&RM@?Lbdj2U?il0R-aFK0)0kwcNs10qk_jg(M^(6o5 z_z?{{Y+s-TzK9yQ2DM_}Ja>UnNK#CD)I{Z|ep668UX1#fZA4|xgUZNWOvO(y32&m# zR#GqW-;u(oUhW^23s4guMP=j|YT)yzh57Y%Gtvn4%2H5=E)V_jPSkUEqkh>GV+KBl zT5vUL!ADU2&N{Ym6ZH-o^>GhJ5-Kw})*h%G<)c!1H~QdM)PyCNi4S1{ZbGH}2-d;x z(HBplKmKBM&Qs7pf1^(266IUV%K{l-OPMYSU2XE86-KJBT#| z-%jQRq3bc?Id6&YL3#|J+z!X%Afl9LOI_D0Vixfhs_$=wmzR1*Z_Y^fD7@KZ%2h7L=RV=ct+$gg$e+GHv^H z%B}wKjON$h;O0dln;S`}tE+uzom(}HsAmvusK0C5#6eqLf^QS|6Y;jMZoNnRK>U~J zP3Y3G)zz2yj?aPWpgG0&}fe}2f%6xv$ZwrI-7t1g5`J8#gEKzu{=vv=!QCt+ir z>_q5lLh!5JY*vM9kBez$@8?p#Kujk7O_UH_i2I27gsyEaCW$`9wF_EE;|zPFIsQWA z*g;>edL<&lIZ8_$E$xYGlz$>761-aTD)BfG!M#iPF>!>@ubHsVJ@FZ# zt2J?g_?FPM*2PS~M8;g8X)38qw>P@bcqipx;%_3B`s?;yEgNj%6RW<@^nVY&u6+PM zAhKwy!as<3B8Uj3O;V|AX%n4T%i3Y5u=d_{SAt%hRwW@f%S{JV@vYBTf-*Rk7D) z3}N!lm`cgv6t}Y;eX*5L>8gzFp*4qJzPc{A`TEEh<{$~ zY^4TsdApYQ1q*A|K`|qw+d+oz}Yb&^g7)IPdJV4|StBE2)*XP7d zZ;1npKN4>ee-bYdwO2KT^xBGb7iQ|S{se`Vp1n~&1b95H+WUEaiGMsGq<`ty^75jI zLklMs6_r&zk(M+lBR!*IYI^6?jI6j0U2@X9B&Tx)-(FBLDRtPyg0hOzf=Lr5=EUU} z6&FpM6nE$3ijwzsmKMZy9p`PBOnq``!L7yP3&xhVFPt#m^J`jcuqP~Mv!AEB`%{7c E2V;A-e*gdg delta 6974 zcmYk>30PKD9>?)Rf^3QlB7zIA2(qgn0)mPts0649`s6YyDkUyJXf}=7TWXCKE=e_( znPxTSQm9y_Svi$kYL2<2Emr21j%HbDsX5;t_wYQOXa0W9IrrYP{Lj5FJ&u0xK)5DlH*uu}48tRQ&sMnaip~keuedvqlu@U}+k@zPDVnl0Wyf6(LV=ruo z`RI>@*Z{|%?i-I`#<)!>6-}@JeQ*tS#*G+{-(nm#W_8in9n~I(3AhNgkR9lWr!fG} zV=Md(S)*yfBw9!;Y9lG=!~CW<6+M`1FAPMIVD3ddFdns&a%3zs!?vqYnRo#;;2P9( zn~*h|9mo#N3Dibzpf^UgGo~3PU2I;0vfs z{fyelbyUV~qcY_g?kuPos=qDjXd+PecSDVnVa-9^H>fui?PQqk7>CVim!fty%Q_FW zfGSi*o<<$Tn(FTw1iCfUPJ8DbRQr(iIO@r-QHOIH@4`!{5w2h`{*IiVY1YBnQX;Cq z7i#IlP%9dX+S)|a{SSBG5H;}gbja1#_1KH{7VL`GP!mQ)I5|#2eV~1iG@6m9Lz<0x zYnGyZSvKJS+=UuHAkxWcFzU?OMskQ+VH_PgjBcn5^g&O|MK2s^`-^PlJ5CVmq2AumM@_^NGhLoeFg4=usA$JK?S;=!H-3+LNq#^r+EU)%n3sD)iZ9nEcIttKeWxj!?G^Va|a=+MpzP#GvfEo2n><2Y0% z%23y5TIZskdkXbZEw%k?QO|EeEqp6#g9kAize7FOF`oP@)d}&=OV|T7K|cCn5&Gj8 z)PGq_MxE_)+dhEW(Jkzb9TS{^$D+o)AGLrPw!aFs&}!66zs^lX6K%IQ>_VmT07l|5 zOvan2g>~uVe3ogb0SZtH{2OYAr5J#-Q9Gc045erW5i`xXlPET2Uox zAu~}seF7WdBGg$fxBV|8e-6xA)DO!+)P0vwM{@&HF(%15l44YQIi}zdWNpT;tNsXa z{^?XS@d(s!cL{1>H^$-$48*;t`@TZ$=sarS*KGeSY)spm^HL^)P#cLr{ZWcX-Jgen zScLxi{wGq=4yL0fehl@W9xE{#-$iBM3~GTFZNFzXXMzOO^=_zlCIhw5Vr+p^Z2K|P z!mF?uEwZq1@uD=Sc>|)KOdE;b+)}5mB|aJ z6#t5PS$)%-ucaw!d>3jVacSgVl~g*k^1jx4P!o>9Fr0&WX;!1|{|uFZQ`j8OV^jPC zHL*WG2Kwy6P#cIr9Z@ILf|615Ww@y{p^}SA<#5zzQ;d3G7HUUxtcy_tylC66pcb+b zgK!&afro7Wm#A^hpfY#SUiVFR7UmA3qLhT929886B;K}@tr@7D^g-Rr+7tTfP@Kw}HxEVG69@O}sBG0+aaVj0@IEzYIqYTHERu|^cAB%cvW?PX%| z?fe7OyRr{;WLHrcyMx+M^WILXgHi89JJbf#u?zM=Eqod(bC33RJ3CuIhf?(l>V_KB zPIsWr?x1ZSMGbfswS&v3`#rLp4Fp(2Pz#K}XzYqw=qS|v<*0FIxvA*Jxz?qq)W3|% z$Qsnkv>BDsou~mmM-6ZW_4{!NwcwkmqiEE}F#`2`4^$@aMlF04Dg*8cDoXXks0o*% z&UytZBU@45??=ZAVO5cSfvMva?-8aE5I-~p%wj>atJHI~;&Lwp`}<0|Zo>oEzxL@hX=zq89G+sfaJa~Zfn;(guw4<>hCRmeE<7A*F?rGb

&(f2p{4L zLZyud`JYE6R8LW!Csq(I5Zwrsql7Ql?;><=(}*jCCay2Ds3^7mcAPEL%ZTp@m94~j zVv-sZei-YDpNBV}6%YNV`so&d?l0-gBeoN-5d3U88-hoOWolD8@n_K*QmAF7WOZ=S}L98MIxbaPFU?0#4 z#}g_#%~<-+;9$Z*v8d9^-t=#$X`0hc zCL(C>w0+`JTYnCB5cd%=_E}x}n3ztyMf4+7^xCTMqL}Zp`G;@Dyhya-!MibwP>H0y z7x~pOVbr@5?@|9Bp)!V8L^P`|X&F|qk=hVKg%dV~geOnvCH|05Nuk}2SnM?G{yoUQ zo#+dccHtyWgP}O?*w{5-N8&m*E48eBW4i) zA|?~vi3!9KLS>VKiRYR7>ld_?&L`}JHh78XVF!JqdSP&|`*V82>FGk;rv3v_Njyqy zCLSX~xOM|SBaRUPM15ID#F>v1lziJ)XAxejKe^)R~6^3QI< zhnvUYCqxRN@?Ro>et%p}93u7+!-@LRmg^mD;|}(uU5t&eKQ1H^sW&E6ekQVs&b0Hj z|4jATvIj@kH?W2%BJLq366wThqJ&U6L3r4KJ5fJRY$JXnUMK3y0V-YU8`k%+tG@L) zR65kY7W%!nSLuWj*Yw&s;mKYN3-es}l~>koiJIfxDregC^0Lz6GFNool+ucdlFGvI zl_e!*G1YxL$7T-C$r_SSFeo8A%Qaw7dO>d7h(QB${PK&ZO;0GQEH0ZirFeRIWxA{1 z(ENPYz^sBCSC5>6tla$GS=re`ataG;cXST(^B-JNI-%G#y<}=dr`j*NZ}9SA`bov* Mlc&|r%Y5AD{{tq!`2YX_ diff --git a/ks_includes/locales/et/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/et/LC_MESSAGES/KlipperScreen.po index 258b62cf5..70b76d5c2 100644 --- a/ks_includes/locales/et/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/et/LC_MESSAGES/KlipperScreen.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-09 18:08-0300\n" +"POT-Creation-Date: 2024-11-26 12:31-0300\n" "PO-Revision-Date: 2024-07-26 19:09+0000\n" "Last-Translator: Jegert Uusküla \n" "Language-Team: Estonian 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 RgXw\n" "Language-Team: French $u zkX&ℑfacGy$Aj1$KSCQkj}E9hz1P7!v|fPq zun@hj7@b&ObU@?K3EYNt=|9b&;0^Pz6)wWs_zW`0v>rR+7IcP3!;jF8KgFha3LQXB zlav}_eYBmn=yjK)6Y7o*q&Mc#f4Y`}Gb}*|G7(+E+p#6yg*LDp9l&ZVz;g7yO=w3u z(HZXz52KIn6U@Oc&~~eFa|3LE85=01;K;8;N7x@-qU+EGZ$d{r0iD?tbRcuk`|b%# z(d(C?16mzEi?;g$@?Uy2>N^Wqe`mIv6LxR_z41uYkAKCX z6*{0Iw4I*l_1A<$!jb3-+}f1&cT-L0M0+enRw=E=wzw5}tmz2a(BILSpG61!pQvAq zdJRV7Ky%RnHN+O!2ED!?I>77EM^ciZ;F69+ZwZ zEAnEb9Z^4kuEZgGJq5mO+PM`4^b7r}` zlkV>J*av$f+b7LJ?<+$G_;A!$q4$+XeG`^Y-;RSY6|(*Vad2TuL$EB|i_RdoU3S;E z#3JfFkujx7=u8)c%h4IF3pa*au@~oeMg1K5>@P*VQHHOMBW{hIu~XDXMSTL=aVa{( zm*e+0(Y>)9{nu?bRxT;p!KwKDB0A9A4%y!e(RPZ_N0+&Zf=e_Ao$*9;ci(~hmlj05 z9PQvWw8L%4i;xbZ9iB!9bScccjBg3`7U=mA=s+f**Uv)sP$n&+;7C@WEAc$~8f`=e z_Ewxf81AoE;@m>=*+sJ?es-1O(p1~or4Z^anx5}#%H*mg5UNX=!_1b4V?_n zqa9RZhk8CA9Y_oG5p_Tt?vK8%Be4d~z*;yvoR7}@KD6JbId$O(Hmz(y$nmJKNj_)=m3tR?VJzux@6nwfKISm)Q3iWbQjj&j%ISgFWP+c1G5a7 zbXtQh<@@M$N22}-+TmIBZK+wD{k3G{|F zQQwU2g?G?~KSXalfo{gn(MMLNYxchOSdV%?bYO$gM>h_A6jRZEGiIRIWlAa7@I&Z@ zE71$rp_}q0bo1;9|A1b10)3s%qW3qsf}M_S&;ehMb}$8<(9EzDealuO1I(li6!JJx zfsSk!+Tc;Nfj@^Q!}HjU^VRs{_1)3yh9N(tF=&USaeg({r@jvR;TyF4Aw;#Tz7OO{raQhEZ%lC5MJ8A_^-9#Qx$wj;YpZSof3 z>y)l09-FdM{^j|l&Ey~{^?^J|fo+{0Anw&1;<1C=S6SlIgd3wg6~7bZM{!D&*Pzqe zM;4P2mEf-_0a zs2Aez$Tei84|i?+AU}z6Lwt=4AT`MiWE!bDcqEno6EhKCA-&1NWgK&~PS$hU6f&%5M#;xUU9kzbQxWHxC{zDKH#atbd*r2tn|OmDQXM#ag3 X8>(0IY(6WmVq3@IITiJa=G6K>#|n*# delta 4502 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\n" "Language-Team: Hebrew 44GnY+Effq*tPBjb4S;~l zC$YFhH>4;ruQ(^MB)`Z?K`E+O&oQqgF-J+kCNZxhKQA-iz|zRj*uWt(IVZm~MK3u& Kck@hxiP8Wvog#Mt delta 108 zcmZ2AgK^ai#tq^Ik{+db>4`;|iFpbd-Z_~C1*t{B$wjHDd76_|47BVcT^)mTef@P^ z92GqLt$aPTqx}6`xqK3fOLRku67!045=-)ntQ6creS8%B9DQ9CY+QXEJ$)P;U0i}( MgM&BEG?*w20HJasy8r+H diff --git a/ks_includes/locales/hu/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/hu/LC_MESSAGES/KlipperScreen.po index 9b0ac7217..ba433df89 100644 --- a/ks_includes/locales/hu/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/hu/LC_MESSAGES/KlipperScreen.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-09 18:08-0300\n" +"POT-Creation-Date: 2024-11-26 12:31-0300\n" "PO-Revision-Date: 2024-10-18 14:01+0000\n" "Last-Translator: \"Zs.Antal\" \n" "Language-Team: Hungarian g5-uZ=P?2(rgLHlUbzK}4 zJp8SEJ+-6!{am?x5{pZ8Ly8jfigOZ6@{6n#+(LbP6#N{0T@`FxeH}f092{L-f?R`x KH%~WElmq}tGa+vP diff --git a/ks_includes/locales/it/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/it/LC_MESSAGES/KlipperScreen.po index 9ccc57f95..d33b95d4f 100644 --- a/ks_includes/locales/it/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/it/LC_MESSAGES/KlipperScreen.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-09 18:08-0300\n" +"POT-Creation-Date: 2024-11-26 12:31-0300\n" "PO-Revision-Date: 2024-11-13 17:00+0000\n" "Last-Translator: Giadej \n" "Language-Team: Italian 0UsnYiS6@d@9|uPlmmt^R R;K~2AvKbRMXKBxq0RU)LB@zGt diff --git a/ks_includes/locales/jp/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/jp/LC_MESSAGES/KlipperScreen.po index cc510b46f..ce977d61b 100644 --- a/ks_includes/locales/jp/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/jp/LC_MESSAGES/KlipperScreen.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-09 18:08-0300\n" +"POT-Creation-Date: 2024-11-26 12:31-0300\n" "PO-Revision-Date: 2024-10-20 01:16+0000\n" "Last-Translator: Hideki Matsunobu \n" "Language-Team: Japanese