From 6a791df881849c01bce3b98c2c414b1411bea676 Mon Sep 17 00:00:00 2001 From: zkk <1007518571@qq.com> Date: Tue, 13 May 2025 09:50:08 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=88=96=E8=80=85=E5=87=8F=E5=B0=91=E6=B8=A9=E5=BA=A6=E4=BC=A0?= =?UTF-8?q?=E6=84=9F=E5=99=A8=E5=8F=AF=E8=83=BD=E5=87=BA=E7=8E=B0bug?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ks_includes/screen_panel.py | 2 +- panels/job_status.py | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ks_includes/screen_panel.py b/ks_includes/screen_panel.py index 4014fca2..05349030 100644 --- a/ks_includes/screen_panel.py +++ b/ks_includes/screen_panel.py @@ -196,7 +196,7 @@ class ScreenPanel: # if dev not in self.devices: # new_label_text += "°" - if self._show_heater_power: + if self._show_heater_power and power: if target != 0: power_label_text = "0%" if power != 0: diff --git a/panels/job_status.py b/panels/job_status.py index a749f635..f318c673 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -493,8 +493,16 @@ class Panel(ScreenPanel): for x in self._printer.get_temp_devices(): if x in data: temp = round(self._printer.get_stat(x, "temperature")) - temp_target = round(self._printer.get_stat(x, "target")) - power = round(self._printer.get_stat(x, "power") * 100) + if (target := self._printer.get_stat(x, "target")): + temp_target = round(target) + else: + temp_target = 0 + + if (target := self._printer.get_stat(x, "power")): + power = round(target * 100) + else: + power = 0 + temp_state = f"{temp}°/{temp_target}° {'{:3.0f}%'.format(power) if self._show_heater_power else ''}".strip() if x in self.buttons['extruder']: self.buttons['extruder'][x].set_label(temp_state) From f007602be0cb901a99de280885048613f5535aa4 Mon Sep 17 00:00:00 2001 From: zkk <1007518571@qq.com> Date: Wed, 14 May 2025 14:55:15 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=96=B7=E5=A4=B4?= =?UTF-8?q?=E4=BA=8C=E6=89=93=E5=8D=B0=E4=B8=AD=E8=BF=9B=E5=85=A5=E5=BE=AE?= =?UTF-8?q?=E8=B0=83=E9=A1=B5=E9=9D=A2=E6=B2=A1=E6=9C=89=E8=B0=83=E8=8A=82?= =?UTF-8?q?=E5=8D=B4=E6=98=BE=E7=A4=BA=E5=81=8F=E7=A7=BB=E5=80=BC=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/fine_tune.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/panels/fine_tune.py b/panels/fine_tune.py index 61a7e8d8..baff8c32 100644 --- a/panels/fine_tune.py +++ b/panels/fine_tune.py @@ -117,7 +117,19 @@ class Panel(ScreenPanel): return if "gcode_move" in data: if "homing_origin" in data["gcode_move"]: - self.labels['zoffset'].set_label(f' {data["gcode_move"]["homing_origin"][2]:.3f}mm') + active_extruder = self._printer.get_stat("toolhead", "extruder") + if active_extruder == "extruder1": + variables = self._printer.get_stat("save_variables", "variables") or {} + nozzle2_offset = variables.get("nozzle_z_offset_val") + try: + nozzle2_offset = float(nozzle2_offset) + z_offset_val = round(data["gcode_move"]["homing_origin"][2] - nozzle2_offset, 3) + except (TypeError, ValueError): + z_offset_val = 0 + z_offset_val = data["gcode_move"]["homing_origin"][2] - nozzle2_offset + self.labels['zoffset'].set_label(f' {z_offset_val:.3f}mm') + else: + self.labels['zoffset'].set_label(f' {data["gcode_move"]["homing_origin"][2]:.3f}mm') self.z_offset = float(data["gcode_move"]["homing_origin"][2]) if "extrude_factor" in data["gcode_move"]: self.extrusion = round(float(data["gcode_move"]["extrude_factor"]) * 100) @@ -129,13 +141,19 @@ class Panel(ScreenPanel): def change_babystepping(self, widget, direction): if direction == "reset": self.labels['zoffset'].set_label(' 0.00mm') - self._screen._send_action(widget, "printer.gcode.script", {"script": "SET_GCODE_OFFSET Z=0 MOVE=1"}) + active_extruder = self._printer.get_stat("toolhead", "extruder") + if active_extruder == "extruder1": + variables = self._printer.get_stat("save_variables", "variables") or {} + nozzle2_offset = variables.get("nozzle_z_offset_val") + self._screen._send_action(widget, "printer.gcode.script", {"script": f"SET_GCODE_OFFSET Z={nozzle2_offset} MOVE=1"}) + else: + self._screen._send_action(widget, "printer.gcode.script", {"script": "SET_GCODE_OFFSET Z=0 MOVE=1"}) return elif direction == "+": self.z_offset += float(self.z_delta) elif direction == "-": self.z_offset -= float(self.z_delta) - self.labels['zoffset'].set_label(f' {self.z_offset:.3f}mm') + # self.labels['zoffset'].set_label(f' {self.z_offset:.3f}mm') self._screen._send_action(widget, "printer.gcode.script", {"script": f"SET_GCODE_OFFSET Z_ADJUST={direction}{self.z_delta} MOVE=1"}) From c7764593a4d121f86b4a1d5ffa4ab5c3171a52ed Mon Sep 17 00:00:00 2001 From: ruipeng <1041589370@qq.com> Date: Thu, 5 Jun 2025 16:09:29 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=85=B1=E6=8C=AF?= =?UTF-8?q?=E8=A1=A5=E5=81=BF=E7=9A=84=E6=95=B4=E5=BD=A2=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E4=B8=8B=E6=8B=89=E6=A1=86=E7=82=B9=E5=87=BB=E5=90=8E=E4=BC=9A?= =?UTF-8?q?=E7=9B=B4=E6=8E=A5=E9=80=89=E6=8B=A9=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/input_shaper.py | 93 ++++++++++++++++++++++++++++++++---------- styles/dark/style.css | 7 ++++ styles/light/style.css | 6 +++ 3 files changed, 84 insertions(+), 22 deletions(-) diff --git a/panels/input_shaper.py b/panels/input_shaper.py index 4ea70def..e8d8b594 100644 --- a/panels/input_shaper.py +++ b/panels/input_shaper.py @@ -19,7 +19,7 @@ class Panel(ScreenPanel): title = title or _("Input Shaper") super().__init__(screen, title) self.freq_xy_adj = {} - self.freq_xy_combo = {} + self.shaper_buttons = {} self.calibrate_btn = self._gtk.Button("move", _('Finding ADXL'), "color1", lines=1) self.calibrate_btn.connect("clicked", self.on_popover_clicked) self.calibrate_btn.set_sensitive(False) @@ -28,13 +28,21 @@ class Panel(ScreenPanel): self.calibrating_axis = None auto_calibration_label = Gtk.Label(hexpand=True) - auto_calibration_label.set_markup("{}".format(_("Auto Calibration"))) + auto_calibration_label.set_markup('Auto Calibration') auto_grid = Gtk.Grid() auto_grid.attach(auto_calibration_label, 0, 0, 1, 1) auto_grid.attach(self.calibrate_btn, 1, 0, 1, 1) + manual_calibration_label = Gtk.Label(vexpand=True) + manual_calibration_label.set_markup('Manual Calibration') + + disclaimer = Gtk.Label(wrap=True, halign=Gtk.Align.CENTER) + disclaimer.set_markup('NOTE: Edit your printer.cfg to save manual calibration changes.') + input_grid = Gtk.Grid() + input_grid.attach(manual_calibration_label, 0, 0, 3, 1) + input_grid.attach(disclaimer, 0, 1, 3, 1) for i, dim_freq in enumerate(XY_FREQ): axis_lbl = Gtk.Label(hexpand=False, vexpand=True, halign=Gtk.Align.START, valign=Gtk.Align.CENTER, @@ -48,14 +56,23 @@ class Panel(ScreenPanel): scale.connect("button-release-event", self.set_opt_value, dim_freq['config']) shaper_slug = dim_freq['config'].replace('_freq_', '_type_') - self.freq_xy_combo[shaper_slug] = Gtk.ComboBoxText() - for shaper in SHAPERS: - self.freq_xy_combo[shaper_slug].append(shaper, shaper) - self.freq_xy_combo[shaper_slug].set_active(0) + menu_btn = Gtk.Button(label=SHAPERS[0]) + menu_btn.set_name("compact-combo") + menu_btn.get_style_context().add_class("combo-button") + menu_btn.connect("clicked", self.on_shaper_menu_clicked, shaper_slug) + menu_btn.set_halign(Gtk.Align.CENTER) + menu_btn.set_valign(Gtk.Align.CENTER) + menu_btn.set_margin_end(5) + self.shaper_buttons[shaper_slug] = menu_btn + + combo_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=0) + combo_box.pack_start(menu_btn, True, True, 0) + arrow = Gtk.Arrow(arrow_type=Gtk.ArrowType.DOWN, shadow_type=Gtk.ShadowType.NONE) + combo_box.pack_start(arrow, False, False, 0) input_grid.attach(axis_lbl, 0, i + 2, 1, 1) input_grid.attach(scale, 1, i + 2, 1, 1) - input_grid.attach(self.freq_xy_combo[shaper_slug], 2, i + 2, 1, 1) + input_grid.attach(combo_box, 2, i + 2, 1, 1) box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) box.add(auto_grid) @@ -65,7 +82,6 @@ class Panel(ScreenPanel): self.content.add(box) pobox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) - pobox.get_style_context().add_class("measure_button") test_x = self._gtk.Button(label=_("Measure X")) test_x.connect("clicked", self.start_calibration, "x") pobox.pack_start(test_x, True, True, 5) @@ -79,6 +95,50 @@ class Panel(ScreenPanel): self.labels['popover'].add(pobox) self.labels['popover'].set_position(Gtk.PositionType.LEFT) + self.shaper_popovers = {} + for dim_freq in XY_FREQ: + shaper_slug = dim_freq['config'].replace('_freq_', '_type_') + popover = Gtk.Popover() + + grid = Gtk.Grid(column_homogeneous=True, row_spacing=2, column_spacing=2) + columns = 2 + for idx, shaper in enumerate(SHAPERS): + btn = Gtk.Button(label=shaper) + btn.set_name("compact-menu-item") + btn.get_style_context().add_class("menu-item") + btn.connect("clicked", self.on_shaper_selected, shaper_slug, shaper) + + row = idx // columns + col = idx % columns + grid.attach(btn, col, row, 1, 1) + + popover.add(grid) + self.shaper_popovers[shaper_slug] = popover + + def on_shaper_menu_clicked(self, widget, shaper_slug): + popover = self.shaper_popovers[shaper_slug] + popover.set_relative_to(widget) + popover.show_all() + + def on_shaper_selected(self, widget, shaper_slug, shaper): + self.shaper_buttons[shaper_slug].set_label(shaper) + self.shaper_popovers[shaper_slug].popdown() + self.set_input_shaper() + + def set_input_shaper(self): + shaper_freq_x = self.freq_xy_adj['shaper_freq_x'].get_value() + shaper_freq_y = self.freq_xy_adj['shaper_freq_y'].get_value() + shaper_type_x = self.shaper_buttons['shaper_type_x'].get_label() + shaper_type_y = self.shaper_buttons['shaper_type_y'].get_label() + + self._screen._ws.klippy.gcode_script( + f'SET_INPUT_SHAPER ' + f'SHAPER_FREQ_X={shaper_freq_x} ' + f'SHAPER_TYPE_X={shaper_type_x} ' + f'SHAPER_FREQ_Y={shaper_freq_y} ' + f'SHAPER_TYPE_Y={shaper_type_y}' + ) + def on_popover_clicked(self, widget): self.labels['popover'].set_relative_to(widget) self.labels['popover'].show_all() @@ -97,18 +157,7 @@ class Panel(ScreenPanel): self.calibrate_btn.set_label(_('Calibrating') + '...') def set_opt_value(self, widget, opt, *args): - shaper_freq_x = self.freq_xy_adj['shaper_freq_x'].get_value() - shaper_freq_y = self.freq_xy_adj['shaper_freq_y'].get_value() - shaper_type_x = self.freq_xy_combo['shaper_type_x'].get_active_text() - shaper_type_y = self.freq_xy_combo['shaper_type_y'].get_active_text() - - self._screen._ws.klippy.gcode_script( - f'SET_INPUT_SHAPER ' - f'SHAPER_FREQ_X={shaper_freq_x} ' - f'SHAPER_TYPE_X={shaper_type_x} ' - f'SHAPER_FREQ_Y={shaper_freq_y} ' - f'SHAPER_TYPE_Y={shaper_type_y}' - ) + self.set_input_shaper() def save_config(self): @@ -149,7 +198,7 @@ class Panel(ScreenPanel): if results: results.groupdict() self.freq_xy_adj['shaper_freq_' + results['axis']].set_value(float(results['shaper_freq'])) - self.freq_xy_combo['shaper_type_' + results['axis']].set_active(SHAPERS.index(results['shaper_type'])) + self.shaper_buttons['shaper_type_' + results['axis']].set_label(results['shaper_type']) if self.calibrating_axis == results['axis'] or (self.calibrating_axis == "both" and results['axis'] == 'y'): self.calibrate_btn.set_sensitive(True) self.calibrate_btn.set_label(_('Calibrated')) @@ -163,4 +212,4 @@ class Panel(ScreenPanel): ): results = results.groupdict() self.freq_xy_adj['shaper_freq_' + results['axis']].set_value(float(results['shaper_freq'])) - self.freq_xy_combo['shaper_type_' + results['axis']].set_active(SHAPERS.index(results['shaper_type'])) + self.shaper_buttons['shaper_type_' + results['axis']].set_label(results['shaper_type']) \ No newline at end of file diff --git a/styles/dark/style.css b/styles/dark/style.css index ef988248..0f3d4d61 100644 --- a/styles/dark/style.css +++ b/styles/dark/style.css @@ -367,4 +367,11 @@ textview .time { .dialog-primary { border-bottom-color: @orange-opa-100; +} + +popover, +popover button { + background-color: @pale-cyan-opa-100; + border-color: @white-opa-20; + opacity: 1; } \ No newline at end of file diff --git a/styles/light/style.css b/styles/light/style.css index 48417f8d..97b4643c 100644 --- a/styles/light/style.css +++ b/styles/light/style.css @@ -417,4 +417,10 @@ textview .time { .dialog-primary { background-color: @color1; border-bottom-color: @color1; +} + +popover, +popover button { + background-color: @color4; + border-color: @solarized-base03; } \ No newline at end of file From 640c70614261aabc8a3cfe52ff4ccd3c8eafa8bb Mon Sep 17 00:00:00 2001 From: zkk <1007518571@qq.com> Date: Thu, 5 Jun 2025 16:21:00 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=8E=A2=E9=92=88?= =?UTF-8?q?=E5=81=8F=E7=A7=BB=E6=A0=A1=E5=87=86=E9=A1=B5=E9=9D=A2=20?= =?UTF-8?q?=E4=BD=BF=E4=BF=9D=E5=AD=98=E7=9A=84=E5=80=BC=E5=92=8C=E6=96=B0?= =?UTF-8?q?=E7=9A=84=E5=80=BC=E4=BF=9D=E6=8C=81=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/zcalibrate.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/panels/zcalibrate.py b/panels/zcalibrate.py index 97c6f75a..ba79c392 100644 --- a/panels/zcalibrate.py +++ b/panels/zcalibrate.py @@ -19,6 +19,7 @@ class Panel(ScreenPanel): self.mesh_radius = None self.mesh_origin = [0, 0] self.zero_ref = [] + self.probe_z_offset = None self.z_hop_speed = 15.0 self.z_hop = 5.0 self.probe = self._printer.get_probe() @@ -249,6 +250,8 @@ class Panel(ScreenPanel): def activate(self): if self._printer.get_stat("manual_probe", "is_active"): self.buttons_calibrating() + self.probe_z_offset = None + self.widgets['zoffset'].set_text("?") else: self.buttons_not_calibrating() @@ -261,7 +264,10 @@ class Panel(ScreenPanel): if "manual_probe" in data: if data["manual_probe"]["is_active"]: self.buttons_calibrating() + if self._printer.get_stat('manual_probe', 'z_position_upper') is None: + self.probe_z_offset = self._printer.data['gcode_move']['gcode_position'][2] - 5 else: + self.probe_z_offset = None self.buttons_not_calibrating() elif action == "notify_gcode_response": if "out of range" in data.lower(): @@ -274,7 +280,10 @@ class Panel(ScreenPanel): def update_position(self, position): self.widgets['zposition'].set_text(f"Z: {position[2]:.3f}") - self.widgets['zoffset'].set_text(f"{abs(position[2] - self.z_offset):.3f}") + if self.probe_z_offset is not None: + self.widgets['zoffset'].set_text(f"{(self.probe_z_offset - position[2]):.3f}") + else: + self.widgets['zoffset'].set_text("?") def change_distance(self, widget, distance): logging.info(f"### Distance {distance}") From 8d2340b54e99f7f4d54aa49b73f358d2a0552313 Mon Sep 17 00:00:00 2001 From: zkk <1007518571@qq.com> Date: Thu, 19 Jun 2025 14:32:18 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E8=B0=83=E5=B9=B3=E7=9A=84=E6=8F=90=E7=A4=BA=E8=AF=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ks_includes/locales/KlipperScreen.pot | 22 +--- .../locales/en/LC_MESSAGES/KlipperScreen.po | 119 ++++++++++++++---- .../zh_CN/LC_MESSAGES/KlipperScreen.mo | Bin 24120 -> 23947 bytes .../zh_CN/LC_MESSAGES/KlipperScreen.po | 39 +++--- .../zh_TW/LC_MESSAGES/KlipperScreen.mo | Bin 23839 -> 23666 bytes .../zh_TW/LC_MESSAGES/KlipperScreen.po | 39 +++--- panels/advanced.py | 4 +- 7 files changed, 144 insertions(+), 79 deletions(-) diff --git a/ks_includes/locales/KlipperScreen.pot b/ks_includes/locales/KlipperScreen.pot index 90649464..1893a3ae 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: 2025-03-29 17:34+0800\n" +"POT-Creation-Date: 2025-06-19 14:30+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -73,9 +73,6 @@ msgstr "" msgid "Activate" msgstr "" -msgid "Adaptive Bed Leveling" -msgstr "" - msgid "Add" msgstr "" @@ -138,7 +135,7 @@ msgstr "" msgid "Auto" msgstr "" -msgid "Auto Calibration" +msgid "Auto Bed Leveling" msgstr "" msgid "Auto Change Nozzle" @@ -159,6 +156,9 @@ msgstr "" msgid "Auto-scroll" msgstr "" +msgid "Automatic compensation based on the data of the bed mesh" +msgstr "" + msgid "Bed Level" msgstr "" @@ -531,9 +531,6 @@ msgstr "" msgid "Key:" msgstr "" -msgid "Klipper Restart" -msgstr "" - msgid "Klipper has disconnected" msgstr "" @@ -580,9 +577,6 @@ msgstr "" msgid "Left:" msgstr "" -msgid "Leveling only in the actual print area" -msgstr "" - msgid "License key" msgstr "" @@ -1055,12 +1049,6 @@ msgstr "" msgid "System" msgstr "" -msgid "System Restart" -msgstr "" - -msgid "System Shutdown" -msgstr "" - msgid "System:" msgstr "" diff --git a/ks_includes/locales/en/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/en/LC_MESSAGES/KlipperScreen.po index 3e1abe11..7702f680 100644 --- a/ks_includes/locales/en/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/en/LC_MESSAGES/KlipperScreen.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-31 14:57+0800\n" +"POT-Creation-Date: 2025-06-19 14:30+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -65,7 +65,10 @@ msgstr "" msgid "Accept" msgstr "" -msgid "Adaptive Bed Leveling" +msgid "Activate" +msgstr "" + +msgid "Add" msgstr "" msgid "Add profile" @@ -127,7 +130,7 @@ msgstr "" msgid "Auto" msgstr "" -msgid "Auto Calibration" +msgid "Auto Bed Leveling" msgstr "" msgid "Auto Change Nozzle" @@ -148,6 +151,9 @@ msgstr "" msgid "Auto-scroll" msgstr "" +msgid "Automatic compensation based on the data of the bed mesh" +msgstr "" + msgid "Bed Level" msgstr "" @@ -229,9 +235,6 @@ msgstr "" msgid "Confirm factory reset?\n" msgstr "" -msgid "Connected" -msgstr "" - msgid "Connecting" msgstr "" @@ -287,6 +290,9 @@ msgstr "" msgid "Disable for 12hs with am / pm" msgstr "" +msgid "Disabled" +msgstr "" + msgid "Disconnect" msgstr "" @@ -301,12 +307,21 @@ msgstr "" msgid "Do you want to recover %s?" msgstr "" +msgid "Door Open Protection Mode" +msgstr "" + +msgid "Elapsed trial time:" +msgstr "" + msgid "Elapsed:" msgstr "" msgid "Emergency Stop" msgstr "" +msgid "Enable Registration Code" +msgstr "" + msgid "Enable screen power management" msgstr "" @@ -457,9 +472,6 @@ msgstr "" msgid "Host" msgstr "" -msgid "Hostname" -msgstr "" - msgid "ID" msgstr "" @@ -502,7 +514,16 @@ msgstr "" msgid "Job Status" msgstr "" -msgid "Klipper Restart" +msgid "Key is empty" +msgstr "" + +msgid "Key is invalid" +msgstr "" + +msgid "Key is valid" +msgstr "" + +msgid "Key:" msgstr "" msgid "Klipper has disconnected" @@ -551,7 +572,7 @@ msgstr "" msgid "Left:" msgstr "" -msgid "Leveling only in the actual print area" +msgid "License key" msgstr "" msgid "Limits" @@ -617,6 +638,9 @@ msgstr "" msgid "Minimum:" msgstr "" +msgid "Minus" +msgstr "" + msgid "Modified" msgstr "" @@ -677,6 +701,9 @@ msgstr "" msgid "Not Inserted" msgstr "" +msgid "Not activated" +msgstr "" + msgid "Not all screens support this" msgstr "" @@ -734,18 +761,30 @@ msgstr "" msgid "Pause" msgstr "" +msgid "Pause Print" +msgstr "" + msgid "Paused" msgstr "" msgid "Perform a full upgrade?" msgstr "" +msgid "Permanent Activation" +msgstr "" + msgid "Pins" msgstr "" +msgid "Please close the door and click Resume to proceed." +msgstr "" + msgid "Please ensure that the Probe Calibrate has been performed" msgstr "" +msgid "Please enter a key to activate" +msgstr "" + msgid "Please enter a valid number" msgstr "" @@ -788,6 +827,12 @@ msgstr "" msgid "Printer Select" msgstr "" +msgid "Printer door is opened. Please close the door and then start printing." +msgstr "" + +msgid "Printer door is opening!" +msgstr "" + msgid "Printing" msgstr "" @@ -830,6 +875,9 @@ msgstr "" msgid "Refresh" msgstr "" +msgid "Remaining Time:" +msgstr "" + msgid "Remove network" msgstr "" @@ -848,10 +896,7 @@ msgstr "" msgid "Restores your print job after a power outage" msgstr "" -msgid "Restoring Left extruder temperature, this may take some time" -msgstr "" - -msgid "Restoring Right extruder temperature, this may take some time" +msgid "Restoring activated extruder temperature, this may take some time." msgstr "" msgid "Resume" @@ -921,6 +966,9 @@ msgstr "" msgid "Send" msgstr "" +msgid "Serial Number:" +msgstr "" + msgid "Settings" msgstr "" @@ -942,6 +990,9 @@ msgstr "" msgid "Size" msgstr "" +msgid "Skip" +msgstr "" + msgid "Slicer" msgstr "" @@ -981,39 +1032,47 @@ msgstr "" msgid "Start testing the Z offset value of the second nozzle?\n" msgstr "" -msgid "Starting WiFi Association" -msgstr "" - msgid "Starting recovery for" msgstr "" msgid "Starting update for" msgstr "" +msgid "State:" +msgstr "" + msgid "System" msgstr "" -msgid "System Restart" -msgstr "" - -msgid "System Shutdown" -msgstr "" - msgid "System:" msgstr "" msgid "Temperature" msgstr "" +msgid "Test Mode" +msgstr "" + msgid "The last print job was not completed continue printing?" msgstr "" +msgid "The new value is not within the valid range." +msgstr "" + msgid "The system doesn't meet the minimum requirement" msgstr "" msgid "The system will reboot!" msgstr "" +msgid "This device is not activated and is available for trial use only" +msgstr "" + +msgid "" +"This feature allows you to customize the printer's response when door " +"opening is detected" +msgstr "" + msgid "This operation is about to print the model" msgstr "" @@ -1032,6 +1091,15 @@ msgstr "" msgid "Total:" msgstr "" +msgid "Trial" +msgstr "" + +msgid "Trial Time:" +msgstr "" + +msgid "Unknown" +msgstr "" + msgid "Unknown Heater" msgstr "" @@ -1134,6 +1202,9 @@ msgid_plural "hours" msgstr[0] "" msgstr[1] "" +msgid "license" +msgstr "" + msgid "macros that use 'rename_existing' are hidden" msgstr "" diff --git a/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.mo index 6cc1981fdba6382731e67d0de9aa0d88d7b7a9af..7af834fd32f067ee03a27b4f9f84f70f7b274e13 100644 GIT binary patch delta 8600 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 L8~Z*UUljNsW$U|; delta 8750 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 EzwQa`\n" "Language-Team: Chinese (Simplified) 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 KrA;ShRR1?\n" "Language-Team: Chinese (Traditional) Date: Thu, 19 Jun 2025 16:46:03 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BA=8A=E7=BD=91?= =?UTF-8?q?=E8=B0=83=E5=B9=B3=E7=9A=84=E7=B2=BE=E7=BB=86=E6=A0=A1=E5=87=86?= =?UTF-8?q?=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ks_includes/locales/KlipperScreen.pot | 14 +-- .../zh_CN/LC_MESSAGES/KlipperScreen.mo | Bin 23947 -> 23940 bytes .../zh_CN/LC_MESSAGES/KlipperScreen.po | 24 ++-- .../zh_TW/LC_MESSAGES/KlipperScreen.mo | Bin 23666 -> 23662 bytes .../zh_TW/LC_MESSAGES/KlipperScreen.po | 21 ++-- panels/bed_mesh.py | 107 ++++++++++-------- 6 files changed, 89 insertions(+), 77 deletions(-) diff --git a/ks_includes/locales/KlipperScreen.pot b/ks_includes/locales/KlipperScreen.pot index 1893a3ae..5c7e4fc6 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: 2025-06-19 14:30+0800\n" +"POT-Creation-Date: 2025-06-19 16:45+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -76,9 +76,6 @@ msgstr "" msgid "Add" msgstr "" -msgid "Add profile" -msgstr "" - msgid "Advanced" msgstr "" @@ -387,6 +384,9 @@ msgstr "" msgid "Fan" msgstr "" +msgid "Fast Calibration" +msgstr "" + msgid "Filament" msgstr "" @@ -414,6 +414,9 @@ msgstr "" msgid "Finding ADXL" msgstr "" +msgid "Fine Calibration" +msgstr "" + msgid "Fine Tuning" msgstr "" @@ -847,9 +850,6 @@ msgstr "" msgid "Probe Offset" msgstr "" -msgid "Profile Name:" -msgstr "" - msgid "Provide KlipperScreen.log when asking for help.\n" msgstr "" diff --git a/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.mo index 7af834fd32f067ee03a27b4f9f84f70f7b274e13..571b66387483a7a5d6129f2ecf2081328040e117 100644 GIT binary patch delta 8334 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 p(zi\n" "Language-Team: Chinese (Simplified) |BClT^lW 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 delta 8383 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 diff --git a/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.po index cc9a5045..bce6dbbb 100644 --- a/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-06-19 14:30+0800\n" +"POT-Creation-Date: 2025-06-19 16:45+0800\n" "PO-Revision-Date: 2024-06-01 12:09+0000\n" "Last-Translator: 峻瑜哥 \n" "Language-Team: Chinese (Traditional)