From 844eaba1ee00f28d22ffad534b5478951f9c2f91 Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Wed, 4 Sep 2024 17:45:18 +0200 Subject: [PATCH 001/127] Translated using Weblate (French) (#1459) Currently translated at 100.0% (318 of 318 strings) Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/fr/ Translation: KlipperScreen/KlipperScreen Co-authored-by: Nackophilz --- .../locales/fr/LC_MESSAGES/KlipperScreen.mo | Bin 14869 -> 19389 bytes .../locales/fr/LC_MESSAGES/KlipperScreen.po | 132 +++++++++--------- 2 files changed, 67 insertions(+), 65 deletions(-) diff --git a/ks_includes/locales/fr/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/fr/LC_MESSAGES/KlipperScreen.mo index b9ab871941ac0d5d66c918c8302c5cda0f7e4aa1..20150c33b573c89463957cc8c5b8c67a9e384b0e 100644 GIT binary patch literal 19389 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 delta 6137 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 Rn`ipRo0|UfP3(YY{|{`@)x-b* diff --git a/ks_includes/locales/fr/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/fr/LC_MESSAGES/KlipperScreen.po index ed757b136..ada45f213 100644 --- a/ks_includes/locales/fr/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/fr/LC_MESSAGES/KlipperScreen.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-06-27 18:24-0300\n" -"PO-Revision-Date: 2024-05-15 07:01+0000\n" -"Last-Translator: Miloslav Kos \n" +"PO-Revision-Date: 2024-08-29 20:09+0000\n" +"Last-Translator: Nackophilz \n" "Language-Team: French \n" "Language: fr\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.6-dev\n" +"X-Generator: Weblate 5.7.1-dev\n" #, python-format msgid "%s will be updated to version" @@ -83,7 +83,7 @@ msgid "Are you sure you wish to shutdown the system?" msgstr "Êtes-vous sûr de vouloir arrêter le système ?" msgid "Asks for confirmation before stopping" -msgstr "" +msgstr "Demande une confirmation avant de s'arrêter" msgid "Auto" msgstr "Auto" @@ -107,7 +107,7 @@ msgid "Bed Mesh" msgstr "Maillage du plateau" msgid "Both" -msgstr "" +msgstr "Les deux" msgid "Calibrate" msgstr "Calibrer" @@ -140,10 +140,10 @@ msgid "Cannot connect to Moonraker" msgstr "Impossible de se connecter à Moonraker" msgid "Changes how the interface looks" -msgstr "" +msgstr "Modifie l'aspect de l'interface" msgid "Changes how the time remaining is calculated" -msgstr "" +msgstr "Modifie le mode de calcul du temps restant" msgid "Channel" msgstr "Canal" @@ -161,7 +161,7 @@ msgid "Close" msgstr "Fermer" msgid "Close messages after a timeout" -msgstr "" +msgstr "Fermer les messages après un délai d'attente" msgid "Complete" msgstr "Impression terminée" @@ -173,14 +173,14 @@ msgid "Connected" msgstr "Connecté" msgid "Connecting" -msgstr "" +msgstr "Connexion" #, python-format msgid "Connecting to %s" msgstr "Connexion à %s" msgid "Connection failed" -msgstr "" +msgstr "Connexion échouée" msgid "Console" msgstr "Console" @@ -189,13 +189,13 @@ msgid "Cooldown" msgstr "Refroidir" msgid "Couldn't add network" -msgstr "" +msgstr "Impossible d'ajouter le réseau" msgid "Current" -msgstr "" +msgstr "Actuel" msgid "Current percentage and graph line" -msgstr "" +msgstr "Pourcentage actuel et ligne graphique" msgid "DPMS has failed to load and has been disabled" msgstr "DPMS n’a pas pu charger et a été désactivé" @@ -216,7 +216,7 @@ msgid "Disable Motors" msgstr "Désactiver les moteurs" msgid "Disable for 12hs with am / pm" -msgstr "" +msgstr "Désactivation pour 12hs avec am / pm" msgid "Disconnect" msgstr "Déconnecter" @@ -226,7 +226,7 @@ msgstr "Distance (mm)" #, python-format msgid "Do you want to forget or disconnect %s?" -msgstr "" +msgstr "Voulez-vous oublier ou déconnecter %s ?" #, python-format msgid "Do you want to recover %s?" @@ -236,10 +236,10 @@ msgid "Elapsed:" msgstr "Écoulé:" msgid "Emergency Stop" -msgstr "" +msgstr "Arrêt d'urgence" msgid "Enable screen power management" -msgstr "" +msgstr "Activer la gestion de la consommation d'énergie de l'écran" msgid "Error" msgstr "Erreur" @@ -254,19 +254,19 @@ msgid "Error setting active spool" msgstr "Erreur dans le réglage de la bobine active" msgid "Error trying to fetch spools" -msgstr "" +msgstr "Erreur lors de la récupération des spools" msgid "Error: Couldn't get a position to probe" -msgstr "" +msgstr "Erreur : Impossible d'obtenir une position pour la sonde" msgid "Estimated Time" -msgstr "" +msgstr "Temps estimé" msgid "Estimated Time Method" msgstr "Méthode d'estimation de la durée" msgid "Example" -msgstr "" +msgstr "Exemple" msgid "Exclude Object" msgstr "Exclure Objet" @@ -287,10 +287,10 @@ msgid "Extrusion -" msgstr "Extrusion -" msgid "Failed to delete connection" -msgstr "" +msgstr "Échec de la suppression de la connexion" msgid "Failed to initialize" -msgstr "" +msgstr "Échec de l'initialisation" msgid "Failed, adjust position first" msgstr "Échec, ajustez d'abord la position" @@ -299,7 +299,7 @@ msgid "Fan" msgstr "Ventilation" msgid "Filament" -msgstr "" +msgstr "Filament" msgid "Filament Used" msgstr "Filament utilisé" @@ -344,16 +344,16 @@ msgid "Font Size" msgstr "Taille de la police" msgid "Forget" -msgstr "" +msgstr "Oublier" msgid "Full Update" msgstr "Mettre à jour" msgid "Gcodes" -msgstr "" +msgstr "Gcodes" msgid "Getting IP address" -msgstr "" +msgstr "Récupérer l'adresse IP" msgid "Go Back" msgstr "Retour" @@ -410,7 +410,7 @@ msgid "Input Shaper" msgstr "Input Shaper" msgid "Insufficient privileges" -msgstr "" +msgstr "Privilèges insuffisant" msgid "Interface" msgstr "Interface" @@ -422,7 +422,7 @@ msgid "Invalid password" msgstr "Mot de passe invalide" msgid "Inversely affects the icon size" -msgstr "" +msgstr "Inverse de la taille de l'icône" msgid "Invert X" msgstr "Inverser l'axe X" @@ -438,10 +438,10 @@ msgstr "" "Cela peut prendre plus de 5 minutes en fonction de la puissance du chauffage." msgid "It's possible that the configuration is not correct" -msgstr "" +msgstr "Il est possible que la configuration ne soit pas correcte" msgid "Job Status" -msgstr "" +msgstr "Statut du job" msgid "Klipper Restart" msgstr "Redémarrer Klipper" @@ -474,13 +474,13 @@ msgid "Large" msgstr "Grande" msgid "Last Duration" -msgstr "" +msgstr "Dernière durée" msgid "Last Used" msgstr "Dernière utilisation" msgid "Layer Height" -msgstr "" +msgstr "Hauteur de couche" msgid "Layer:" msgstr "Couche:" @@ -528,7 +528,7 @@ msgid "Max Velocity" msgstr "Vélocité maximale" msgid "Max:" -msgstr "" +msgstr "Max:" msgid "Maximum" msgstr "Maximum" @@ -546,16 +546,16 @@ msgid "Medium" msgstr "Moyenne" msgid "Memory" -msgstr "" +msgstr "Mémoire" msgid "Menu" msgstr "Menu" msgid "Minimum Cruise Ratio" -msgstr "" +msgstr "Ratio de croisière minimum" msgid "Minimum:" -msgstr "" +msgstr "Minimum:" msgid "Modified" msgstr "Modifié" @@ -579,13 +579,13 @@ msgid "Network" msgstr "Réseau" msgid "Network connected" -msgstr "" +msgstr "Réseau connecté" msgid "Network disconnected" -msgstr "" +msgstr "Réseau déconnecté" msgid "Network not found" -msgstr "" +msgstr "Réseau non trouvé" msgid "Never" msgstr "Jamais" @@ -597,7 +597,7 @@ msgid "No elegible macros:" msgstr "Macros non éligibles :" msgid "No info available" -msgstr "" +msgstr "Pas d'information disponible" msgid "No mesh has been loaded" msgstr "Aucun maillage chargé" @@ -606,7 +606,7 @@ msgid "No wireless interface has been found" msgstr "Pas de périphérique sans-fil trouvé" msgid "Not all screens support this" -msgstr "" +msgstr "Tout les écrans ne supporte pas cela" msgid "Not working or not configured" msgstr "Ne fonctionne pas ou n'est pas configuré" @@ -621,10 +621,10 @@ msgid "Notifications" msgstr "Notifications" msgid "Nozzle diameter" -msgstr "" +msgstr "Diamètre de la buse" msgid "Only for the move panel" -msgstr "" +msgstr "Seulement pour bouger le panneau" #, python-format msgid "Outdated by %d" @@ -660,7 +660,7 @@ msgid "Please recompile and flash the micro-controller." msgstr "Veuillez recompiler et flasher le microcontrôleur." msgid "Please wait" -msgstr "" +msgstr "Veuillez patienter" msgid "Power" msgstr "Alimentation" @@ -675,7 +675,7 @@ msgid "Pressure Advance:" msgstr "Avance de pression:" msgid "Pressure advance" -msgstr "" +msgstr "Avance de pression" msgid "Print" msgstr "Imprimer" @@ -727,7 +727,7 @@ msgid "Refresh" msgstr "Rafraîchir" msgid "Remove network" -msgstr "" +msgstr "Supprimer le réseau" msgid "Rename/Move:" msgstr "Renommer/déplacer :" @@ -757,7 +757,7 @@ msgid "Retrying" msgstr "Réessaye" msgid "Rotation invalid" -msgstr "" +msgstr "Rotation invalide" msgid "Save" msgstr "Enregistrer" @@ -788,7 +788,7 @@ msgid "Screws Adjust" msgstr "Ajuster les vis" msgid "Screws not used:" -msgstr "" +msgstr "Vis non utilisée(s):" msgid "Send" msgstr "Envoyer" @@ -809,7 +809,7 @@ msgid "Show Scrollbars Buttons" msgstr "Boutons d'affichage des barres de défilement" msgid "Show only devices that are able to be set" -msgstr "" +msgstr "Afficher uniquement les appareils pouvant être configurés" msgid "Shutdown" msgstr "Arrêter" @@ -827,7 +827,7 @@ msgid "Small" msgstr "Petite" msgid "Smooth time" -msgstr "" +msgstr "Temps de pause" msgid "Speed (mm/s)" msgstr "Vitesse (mm/s)" @@ -858,6 +858,7 @@ msgstr "Démarrage de la mise à jour pour" msgid "Swaps buttons if they are on top of each other, affects other panels" msgstr "" +"Intervertit les boutons s'ils sont superposés, affecte les autres panneaux" msgid "System" msgstr "Système" @@ -869,7 +870,7 @@ msgid "System Shutdown" msgstr "Arrêter le système" msgid "System:" -msgstr "" +msgstr "Système:" msgid "Temp (°C)" msgstr "Temp (°C)" @@ -878,19 +879,20 @@ msgid "Temperature" msgstr "Température" msgid "The system doesn't meet the minimum requirement" -msgstr "" +msgstr "Le système ne répond pas aux exigences minimales" msgid "This panel supports up-to 9 screws in a 3x3 Grid" -msgstr "" +msgstr "Ce panneau supporte jusqu'à 9 vis dans une grille de 3x3" msgid "This will affect screw positions and mesh graph" -msgstr "" +msgstr "Cela affectera la position des vis et le graphique des mailles" msgid "Timeout for screen black-out or power-off" -msgstr "" +msgstr "Délai d'extinction de l'écran ou de mise hors tension" msgid "Timeout for screen black-out or power-off during printing" msgstr "" +"Délai d'extinction de l'écran ou de mise hors tension pendant l'impression" msgid "Total:" msgstr "Total:" @@ -899,7 +901,7 @@ msgid "Unknown Heater" msgstr "Chauffe inconnue" msgid "Unknown security type" -msgstr "" +msgstr "Type de sécurité inconnu" msgid "Unload" msgstr "Décharger" @@ -920,13 +922,13 @@ msgid "Updating" msgstr "Mise à jour" msgid "Useful for un-responsive touchscreens" -msgstr "" +msgstr "Utile pour les écrans tactiles peu réactifs" msgid "WebRTC is not supported by the backend trying Stream" msgstr "WebRTC n'est pas pris en charge par le backend essai du Stream" msgid "Working" -msgstr "" +msgstr "Fonctionne" msgid "XY Move Speed (mm/s)" msgstr "Vitesse de déplacement XY (mm/s)" @@ -956,11 +958,11 @@ msgstr[1] "changements" msgid "day" msgid_plural "days" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "jour" +msgstr[1] "jours" msgid "g" -msgstr "" +msgstr "g" msgid "hour" msgid_plural "hours" @@ -991,12 +993,12 @@ msgid "mm³/s" msgstr "mm³/s" msgid "s" -msgstr "" +msgstr "s" msgid "second" msgid_plural "seconds" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "seconde" +msgstr[1] "secondes" #~ msgid "Mesh calibrate" #~ msgstr "Calibration du maillage" From d99048d29fd38db02cb5d450c6d729cda60270b0 Mon Sep 17 00:00:00 2001 From: Scott Mikutsky Date: Wed, 4 Sep 2024 11:45:39 -0400 Subject: [PATCH 002/127] Only calls BED_MESH_CLEAR if bed_mesh enabled (#1460) --- panels/zcalibrate.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/panels/zcalibrate.py b/panels/zcalibrate.py index 6bf2f5b15..0d8d645de 100644 --- a/panels/zcalibrate.py +++ b/panels/zcalibrate.py @@ -216,7 +216,8 @@ def start_calibration(self, widget): self.dropdown.set_sensitive(False) self._screen._ws.klippy.gcode_script("SET_GCODE_OFFSET Z=0") - self._screen._ws.klippy.gcode_script("BED_MESH_CLEAR") + if self._printer.config_section_exists("bed_mesh"): + self._screen._ws.klippy.gcode_script("BED_MESH_CLEAR") if self._printer.get_stat("toolhead", "homed_axes") != "xyz": self._screen._ws.klippy.gcode_script("G28") self._move_to_position(*self._get_calibration_location()) From 7fd759d5fc42ec78acb0c70c8d517a64c63fdf48 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Mon, 2 Sep 2024 12:14:21 -0300 Subject: [PATCH 003/127] feat: show the cursor toggle and allow switching on the fly --- CHANGELOG.md | 1 + docs/Configuration.md | 3 --- ks_includes/KlippyGtk.py | 18 +++++++++++------- ks_includes/config.py | 3 +++ screen.py | 16 ++++++++-------- 5 files changed, 23 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 40006957e..abfeb3591 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ 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 ## Untagged +* allow showing/hiding cursor from the settings * some wpa-eap support, adds the security type selector and user field * extrude: wait for temp or open temp panel automatically close #1416 * extrude: show more filament sensors (up to 9) diff --git a/docs/Configuration.md b/docs/Configuration.md index acc80d28f..a3a07a4d9 100644 --- a/docs/Configuration.md +++ b/docs/Configuration.md @@ -24,9 +24,6 @@ The options listed here are not editable from within the user interface. # Time in seconds before the Job Status closes itself if an error is encountered # job_error_timeout: 0 -# Allows the cursor to be displayed on the screen -# show_cursor: False - # If multiple printers are defined, this can be set the name of the one to show at startup. # default_printer: MyPrinter diff --git a/ks_includes/KlippyGtk.py b/ks_includes/KlippyGtk.py index d5729ed5a..1f0645683 100644 --- a/ks_includes/KlippyGtk.py +++ b/ks_includes/KlippyGtk.py @@ -35,7 +35,6 @@ class KlippyGtk: def __init__(self, screen): self.screen = screen self.themedir = os.path.join(pathlib.Path(__file__).parent.resolve().parent, "styles", screen.theme, "images") - self.cursor = screen.show_cursor self.font_size_type = screen._config.get_main_config().get("font_size", "medium") self.width = screen.width self.height = screen.height @@ -250,12 +249,7 @@ def Dialog(self, title, buttons, content, callback=None, *args): dialog.show_all() # Change cursor to blank - if self.cursor: - dialog.get_window().set_cursor( - Gdk.Cursor.new_for_display(Gdk.Display.get_default(), Gdk.CursorType.ARROW)) - else: - dialog.get_window().set_cursor( - Gdk.Cursor.new_for_display(Gdk.Display.get_default(), Gdk.CursorType.BLANK_CURSOR)) + self.set_cursor(show=self.screen.show_cursor, window=dialog.get_window()) self.screen.dialogs.append(dialog) logging.info(f"Showing dialog {dialog.get_title()} {dialog.get_size()}") @@ -274,3 +268,13 @@ def remove_dialog(self, dialog, *args): def ScrolledWindow(self, steppers=True, **kwargs): steppers = steppers and self.screen._config.get_main_config().getboolean("show_scroll_steppers", fallback=False) return CustomScrolledWindow(steppers, **kwargs) + + def set_cursor(self, show: bool, window: Gdk.Window): + if show: + window.set_cursor( + Gdk.Cursor.new_for_display(Gdk.Display.get_default(), Gdk.CursorType.ARROW)) + os.system("xsetroot -cursor_name arrow") + else: + window.set_cursor( + Gdk.Cursor.new_for_display(Gdk.Display.get_default(), Gdk.CursorType.BLANK_CURSOR)) + os.system("xsetroot -cursor ks_includes/emptyCursor.xbm ks_includes/emptyCursor.xbm") diff --git a/ks_includes/config.py b/ks_includes/config.py index 28b1efd06..ce4971699 100644 --- a/ks_includes/config.py +++ b/ks_includes/config.py @@ -309,6 +309,9 @@ def _create_configurable_options(self, screen): "value": "False", "callback": screen.reload_panels}}, {"auto_open_extrude": {"section": "main", "name": _("Auto-open Extrude On Pause"), "type": "binary", "value": "True", "callback": screen.reload_panels}}, + {"show_cursor": {"section": "main", "name": _("Show cursor"), "type": "binary", + "tooltip": _("For mouse control or to verify touchscreen accuracy"), + "value": "False", "callback": screen.update_cursor}}, # {"": {"section": "main", "name": _(""), "type": ""}} ] diff --git a/screen.py b/screen.py index 14a32e09e..bb858999d 100755 --- a/screen.py +++ b/screen.py @@ -146,6 +146,7 @@ def __init__(self, args): self.change_theme(self.theme) self.add(self.base_panel.main_grid) self.show_all() + self.update_cursor(self.show_cursor) min_ver = (3, 8) if sys.version_info < min_ver: self.show_error_modal( @@ -158,19 +159,15 @@ def __init__(self, args): if self._config.errors: self.show_error_modal("Invalid config file", self._config.get_errors()) return - if self.show_cursor: - self.get_window().set_cursor( - Gdk.Cursor.new_for_display(Gdk.Display.get_default(), Gdk.CursorType.ARROW)) - os.system("xsetroot -cursor_name arrow") - else: - self.get_window().set_cursor( - Gdk.Cursor.new_for_display(Gdk.Display.get_default(), Gdk.CursorType.BLANK_CURSOR)) - os.system("xsetroot -cursor ks_includes/emptyCursor.xbm ks_includes/emptyCursor.xbm") self.base_panel.activate() self.set_screenblanking_timeout(self._config.get_main_config().get('screen_blanking')) self.log_notification("KlipperScreen Started", 1) self.initial_connection() + def update_cursor(self, show: bool): + self.show_cursor = show + self.gtk.set_cursor(show, window=self.get_window()) + def state_execute(self, state, callback): self.close_screensaver() if 'printer_select' in self._cur_panels: @@ -633,6 +630,8 @@ def show_screensaver(self): # 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) @@ -652,6 +651,7 @@ def close_screensaver(self, widget=None): 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.show_all() self.power_devices(None, self._config.get_main_config().get("screen_on_devices", ""), on=True) From 21a269edd2ff62e0efd8665e9336edc0966945a4 Mon Sep 17 00:00:00 2001 From: andrewmv Date: Fri, 13 Sep 2024 14:02:12 -0700 Subject: [PATCH 004/127] feat: Moonraker route prefix support (#1464) * Added config directives to specify moonraker route prefix, and explicitly specify SSL * Added newly-implemented options to documentation * Fixed boolean handling * Cleanup * Fixed trailing whitespace * refactor: simplifications and lint fixes --------- Co-authored-by: Alfredo Monclus --- docs/Configuration.md | 7 ++++++- ks_includes/KlippyRest.py | 7 +++++-- ks_includes/KlippyWebsocket.py | 8 +++++--- ks_includes/config.py | 6 ++++-- screen.py | 4 ++++ 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/docs/Configuration.md b/docs/Configuration.md index a3a07a4d9..b9b3576ab 100644 --- a/docs/Configuration.md +++ b/docs/Configuration.md @@ -46,8 +46,13 @@ Multiple printers can be defined [printer MyPrinter] # Define the moonraker host/port if different from 127.0.0.1 and 7125 moonraker_host: 127.0.0.1 -# ports 443 and 7130 will use https/wss moonraker_port: 7125 +# Use HTTPS/WSS. Defaults to True for ports 443 or 7130, False for any other port +# moonraker_ssl: False +# If you're using the route_prefix option in your moonraker config, specify it here. +# This can be useful for running multiple printers behind a path-based reverse proxy. +# Most installs will not need this. +# moonraker_path: printer1 # Moonraker API key if this host is not connecting from a trusted client IP # moonraker_api_key: False diff --git a/ks_includes/KlippyRest.py b/ks_includes/KlippyRest.py index edb1a8243..2234f670c 100644 --- a/ks_includes/KlippyRest.py +++ b/ks_includes/KlippyRest.py @@ -4,15 +4,18 @@ class KlippyRest: - def __init__(self, ip, port=7125, api_key=False): + def __init__(self, ip, port=7125, api_key=False, path='', ssl=None): self.ip = ip self.port = port + self.path = f"/{path}" if path else '' + self.ssl = ssl self.api_key = api_key + self.ssl = int(self.port) in {443, 7130} if ssl is None else bool(ssl) self.status = '' @property def endpoint(self): - return f"{'https' if int(self.port) in {443, 7130} else 'http'}://{self.ip}:{self.port}" + return f"{'https' if self.ssl else 'http'}://{self.ip}:{self.port}{self.path}" @staticmethod def process_response(response): diff --git a/ks_includes/KlippyWebsocket.py b/ks_includes/KlippyWebsocket.py index db6d04d14..24748e76e 100644 --- a/ks_includes/KlippyWebsocket.py +++ b/ks_includes/KlippyWebsocket.py @@ -20,7 +20,7 @@ class KlippyWebsocket(threading.Thread): reconnect_count = 0 max_retries = 4 - def __init__(self, callback, host, port, api_key): + def __init__(self, callback, host, port, api_key, path='', ssl=None): threading.Thread.__init__(self) self._wst = None self.ws_url = None @@ -30,16 +30,18 @@ def __init__(self, callback, host, port, api_key): self.closing = False self.host = host self.port = port + self.path = f"/{path}" if path else '' + self.ssl = int(self.port) in {443, 7130} if ssl is None else bool(ssl) self.header = {"x-api-key": api_key} if api_key else {} self.api_key = api_key @property def _url(self): - return f"{self.host}:{self.port}" + return f"{self.host}:{self.port}{self.path}" @property def ws_proto(self): - return "wss" if int(self.port) in {443, 7130} else "ws" + return "wss" if self.ssl else "ws" def initial_connect(self): if self.connect() is not False: diff --git a/ks_includes/config.py b/ks_includes/config.py index ce4971699..ecd855488 100644 --- a/ks_includes/config.py +++ b/ks_includes/config.py @@ -98,6 +98,8 @@ def __init__(self, configfile, screen=None): {printer[8:]: { "moonraker_host": self.config.get(printer, "moonraker_host", fallback="127.0.0.1"), "moonraker_port": self.config.get(printer, "moonraker_port", fallback="7125"), + "moonraker_path": self.config.get(printer, "moonraker_path", fallback='').strip('/'), + "moonraker_ssl": self.config.getboolean(printer, "moonraker_ssl", fallback=None), "moonraker_api_key": self.config.get(printer, "moonraker_api_key", fallback="").replace('"', '') }} for printer in printers ] @@ -173,10 +175,10 @@ def validate_config(self, config, string="", remove=False): ) elif section.startswith('printer '): bools = ( - 'invert_x', 'invert_y', 'invert_z', + 'invert_x', 'invert_y', 'invert_z', 'moonraker_ssl', ) strs = ( - 'moonraker_api_key', 'moonraker_host', 'titlebar_name_type', + 'moonraker_api_key', 'moonraker_host', 'moonraker_path', 'titlebar_name_type', 'screw_positions', 'power_devices', 'titlebar_items', 'z_babystep_values', 'extrude_distances', 'extrude_speeds', 'move_distances', 'zcalibrate_custom_commands' ) diff --git a/screen.py b/screen.py index bb858999d..6eb2cffba 100755 --- a/screen.py +++ b/screen.py @@ -235,6 +235,8 @@ def connect_printer(self, name): self.printers[ind][name]["moonraker_host"], self.printers[ind][name]["moonraker_port"], self.printers[ind][name]["moonraker_api_key"], + self.printers[ind][name]["moonraker_path"], + self.printers[ind][name]["moonraker_ssl"], ) self._ws = KlippyWebsocket( { @@ -246,6 +248,8 @@ def connect_printer(self, name): self.printers[ind][name]["moonraker_host"], self.printers[ind][name]["moonraker_port"], self.printers[ind][name]["moonraker_api_key"], + self.printers[ind][name]["moonraker_path"], + self.printers[ind][name]["moonraker_ssl"], ) if self.files is None: self.files = KlippyFiles(self) From 24d7851091ebe9c6b589817451032b1461a73677 Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Fri, 13 Sep 2024 23:03:45 +0200 Subject: [PATCH 005/127] chore(locales): Translations update from Hosted Weblate (#1466) * Translated using Weblate (German (de_FORMAL)) Currently translated at 86.4% (275 of 318 strings) Translated using Weblate (German) Currently translated at 100.0% (318 of 318 strings) Co-authored-by: Leart Dukaj Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/de/ Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/de_FORMAL/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (German (de_FORMAL)) Currently translated at 100.0% (318 of 318 strings) Translated using Weblate (German (de_FORMAL)) Currently translated at 95.2% (303 of 318 strings) Translated using Weblate (German (de_FORMAL)) Currently translated at 86.4% (275 of 318 strings) Co-authored-by: Flo082002 Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/de_FORMAL/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (German (de_FORMAL)) Currently translated at 100.0% (318 of 318 strings) Translated using Weblate (German) Currently translated at 100.0% (318 of 318 strings) Translated using Weblate (German (de_FORMAL)) Currently translated at 95.2% (303 of 318 strings) Co-authored-by: Leart Dukaj Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/de/ Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/de_FORMAL/ Translation: KlipperScreen/KlipperScreen --------- Co-authored-by: Leart Dukaj Co-authored-by: Flo082002 --- .../locales/de/LC_MESSAGES/KlipperScreen.mo | Bin 18955 -> 19033 bytes .../locales/de/LC_MESSAGES/KlipperScreen.po | 11 +- .../de_formal/LC_MESSAGES/KlipperScreen.mo | Bin 14806 -> 19118 bytes .../de_formal/LC_MESSAGES/KlipperScreen.po | 116 +++++++++--------- 4 files changed, 64 insertions(+), 63 deletions(-) diff --git a/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.mo index 941d084d96e7b47f1fdb3e5818bac9a1ab2df8a9..e0670996c9a61c5d575ceeae5396647ae5a68998 100644 GIT binary patch delta 5746 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 SE%K`-l~>FuuU%gBj_3a^iDpUw delta 5669 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 F{STR|MwS2o diff --git a/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.po index d1c842f21..202c37e81 100644 --- a/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-06-27 18:24-0300\n" -"PO-Revision-Date: 2024-08-02 21:05+0000\n" -"Last-Translator: Benedikt Fuchs \n" +"PO-Revision-Date: 2024-09-07 00:09+0000\n" +"Last-Translator: Leart Dukaj \n" "Language-Team: German \n" "Language: de\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.7-dev\n" +"X-Generator: Weblate 5.8-dev\n" #, python-format msgid "%s will be updated to version" @@ -824,9 +824,8 @@ msgstr "Slicer:" msgid "Small" msgstr "Klein" -#, fuzzy msgid "Smooth time" -msgstr "Smooth time" +msgstr "Erweichungsdauer" msgid "Speed (mm/s)" msgstr "Geschwindigkeit (mm/s)" @@ -929,7 +928,7 @@ msgid "WebRTC is not supported by the backend trying Stream" msgstr "WebRTC wird vom Backend nicht unterstützt" msgid "Working" -msgstr "" +msgstr "Arbeitet" msgid "XY Move Speed (mm/s)" msgstr "XY Bewegungsgeschwindigkeit (mm/s)" diff --git a/ks_includes/locales/de_formal/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/de_formal/LC_MESSAGES/KlipperScreen.mo index 77690eb5c010076700de6cf9f317d46e41b7be98..6aaf182760765bd6b9a66e6464edb9c950737c6a 100644 GIT binary patch literal 19118 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 TYJQLRiq~o*(S)n8V;uYkN8-{V delta 6120 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\n" +"PO-Revision-Date: 2024-09-07 00:09+0000\n" +"Last-Translator: Leart Dukaj \n" "Language-Team: German \n" "Language: de_formal\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.7-dev\n" +"X-Generator: Weblate 5.8-dev\n" #, python-format msgid "%s will be updated to version" @@ -55,11 +55,11 @@ msgstr "Anwenden" #, python-format msgid "Apply %s%.3f offset to Endstop?" -msgstr "%s%.3f Offset auf Endstop anwenden" +msgstr "%s%.3f Offset auf Endstop anwenden?" #, python-format msgid "Apply %s%.3f offset to Probe?" -msgstr "%s%.3f Offset auf Probe anwenden" +msgstr "%s%.3f Offset auf Probe anwenden?" msgid "Archived" msgstr "Archiviert" @@ -83,7 +83,7 @@ msgid "Are you sure you wish to shutdown the system?" msgstr "Möchten Sie das System wirklich herunterfahren?" msgid "Asks for confirmation before stopping" -msgstr "" +msgstr "Bittet sie vor dem aufhören um Bestätigung" msgid "Auto" msgstr "Auto" @@ -95,7 +95,7 @@ msgid "Auto-close notifications" msgstr "Benachrichtigungen automatisch schließen" msgid "Auto-open Extrude On Pause" -msgstr "" +msgstr "Extrudieren bei Pause automatisch öffnen" msgid "Auto-scroll" msgstr "Auto-scroll" @@ -140,7 +140,7 @@ msgid "Cannot connect to Moonraker" msgstr "Es kann keine Verbindung zu Moonraker hergestellt werden" msgid "Changes how the interface looks" -msgstr "" +msgstr "Ändert das Aussehen der Oberfläche" msgid "Changes how the time remaining is calculated" msgstr "Verändert, wie die verbleibende Zeit berechnet wird" @@ -161,7 +161,7 @@ msgid "Close" msgstr "Schließen" msgid "Close messages after a timeout" -msgstr "" +msgstr "Schließe Nachrichten nach einer bestimmten Zeit" msgid "Complete" msgstr "Fertiggestellt" @@ -189,13 +189,13 @@ msgid "Cooldown" msgstr "Abkühlen" msgid "Couldn't add network" -msgstr "" +msgstr "Netzwerk konnte nicht hinzugefügt werden" msgid "Current" -msgstr "" +msgstr "Aktuell" msgid "Current percentage and graph line" -msgstr "" +msgstr "Momentane Prozent und Diagramm Linie" msgid "DPMS has failed to load and has been disabled" msgstr "DPMS konnte nicht geladen werden und wurde deaktiviert" @@ -216,7 +216,7 @@ msgid "Disable Motors" msgstr "Motoren deaktivieren" msgid "Disable for 12hs with am / pm" -msgstr "" +msgstr "Deaktivieren für 12h Anzeige mit AM/PM" msgid "Disconnect" msgstr "Trennen" @@ -226,7 +226,7 @@ msgstr "Entfernung (mm)" #, python-format msgid "Do you want to forget or disconnect %s?" -msgstr "" +msgstr "Wollen Sie %s vergessen oder trennen?" #, python-format msgid "Do you want to recover %s?" @@ -236,31 +236,31 @@ msgid "Elapsed:" msgstr "Laufzeit:" msgid "Emergency Stop" -msgstr "" +msgstr "Notausschalter" msgid "Enable screen power management" -msgstr "" +msgstr "Bildschirm Energieverwaltung aktivieren" msgid "Error" msgstr "Fehler" msgid "Error clearing active spool" -msgstr "" +msgstr "Fehler beim Leeren der aktiven Spule" msgid "Error getting active spool" -msgstr "" +msgstr "Fehler beim Abrufen der aktiven Spule" msgid "Error setting active spool" -msgstr "" +msgstr "Fehler beim Einstellen der aktiven Spule" msgid "Error trying to fetch spools" -msgstr "" +msgstr "Fehler beim Abrufen der Spulen" msgid "Error: Couldn't get a position to probe" -msgstr "" +msgstr "Fehler: Es konnte keine Position zum Abtasten ermittelt werden" msgid "Estimated Time" -msgstr "" +msgstr "Geschätzte Zeit" msgid "Estimated Time Method" msgstr "Verbleibende Zeit" @@ -287,10 +287,10 @@ msgid "Extrusion -" msgstr "Extrudieren -" msgid "Failed to delete connection" -msgstr "" +msgstr "Löschen der Verbindung fehlgeschlagen" msgid "Failed to initialize" -msgstr "" +msgstr "Initialisierung fehlgeschlagen" msgid "Failed, adjust position first" msgstr "Fehlgeschlagen, Position zuerst anpassen" @@ -344,16 +344,16 @@ msgid "Font Size" msgstr "Schriftgröße" msgid "Forget" -msgstr "" +msgstr "Vergessen" msgid "Full Update" msgstr "Vollständige Update" msgid "Gcodes" -msgstr "" +msgstr "Gcodes" msgid "Getting IP address" -msgstr "" +msgstr "Rufe IP Adresse ab" msgid "Go Back" msgstr "Zurück" @@ -410,7 +410,7 @@ msgid "Input Shaper" msgstr "Input Shaper" msgid "Insufficient privileges" -msgstr "" +msgstr "Unzureichende Rechte" msgid "Interface" msgstr "Oberfläche" @@ -422,7 +422,7 @@ msgid "Invalid password" msgstr "Ungültiges Passwort" msgid "Inversely affects the icon size" -msgstr "" +msgstr "Beeinflusst die Symbolgröße umgekehrt" msgid "Invert X" msgstr "Achse X invertieren" @@ -437,10 +437,10 @@ msgid "It may take more than 5 minutes depending on the heater power." msgstr "Je nach Leistung der Heizung kann dies mehr als 5 Minuten dauern." msgid "It's possible that the configuration is not correct" -msgstr "" +msgstr "Es ist möglich, dass die Konfiguration nicht richtig ist" msgid "Job Status" -msgstr "" +msgstr "Auftragsstatus" msgid "Klipper Restart" msgstr "Klipper Neustart" @@ -473,7 +473,7 @@ msgid "Large" msgstr "Groß" msgid "Last Duration" -msgstr "" +msgstr "Letze Dauer" msgid "Last Used" msgstr "Zuletzt verwendet" @@ -485,7 +485,7 @@ msgid "Layer:" msgstr "Schicht:" msgid "Leds" -msgstr "" +msgstr "LEDs" msgid "Left:" msgstr "Restzeit:" @@ -545,13 +545,13 @@ msgid "Medium" msgstr "Mittel" msgid "Memory" -msgstr "" +msgstr "Speicher" msgid "Menu" msgstr "Menü" msgid "Minimum Cruise Ratio" -msgstr "" +msgstr "Minimales Cruiseverhältnis" msgid "Minimum:" msgstr "Minimum:" @@ -581,7 +581,7 @@ msgid "Network connected" msgstr "Netzwerk verbunden" msgid "Network disconnected" -msgstr "" +msgstr "Netzwerk getrennt" msgid "Network not found" msgstr "Netzwerk nicht gefunden" @@ -596,19 +596,19 @@ msgid "No elegible macros:" msgstr "Keine wählbaren Makros:" msgid "No info available" -msgstr "Keine Informationen verfügbar." +msgstr "Keine Informationen verfügbar" msgid "No mesh has been loaded" -msgstr "" +msgstr "Es wurde kein Netz geladen" msgid "No wireless interface has been found" -msgstr "" +msgstr "Es wurde keine drahtlose Schnittstelle gefunden" msgid "Not all screens support this" -msgstr "" +msgstr "Nicht alle Bildschirme unterstützen das" msgid "Not working or not configured" -msgstr "" +msgstr "Nicht funktionsfähig oder nicht konfiguriert" msgid "Nothing selected" msgstr "Nichts ausgewählt" @@ -623,7 +623,7 @@ msgid "Nozzle diameter" msgstr "Düsendurchmesser" msgid "Only for the move panel" -msgstr "" +msgstr "Nur für das Bewegungspanel" #, python-format msgid "Outdated by %d" @@ -674,7 +674,7 @@ msgid "Pressure Advance:" msgstr "Druckvorlauf:" msgid "Pressure advance" -msgstr "" +msgstr "Pressure advance" msgid "Print" msgstr "Druck" @@ -701,10 +701,10 @@ msgid "Profile Name:" msgstr "Profilname:" msgid "Provide KlipperScreen.log when asking for help.\n" -msgstr "" +msgstr "Wenn Hilfe benötigt wird KlipperScreen.log angeben\n" msgid "Quad Gantry Level" -msgstr "Quad Gantry Level" +msgstr "Vierfache Nivellierung" msgid "Raise Nozzle" msgstr "Düse anheben" @@ -755,7 +755,7 @@ msgid "Retrying" msgstr "Wiederhole" msgid "Rotation invalid" -msgstr "" +msgstr "Drehung ungültig" msgid "Save" msgstr "Speichern" @@ -786,7 +786,7 @@ msgid "Screws Adjust" msgstr "Schrauben Einstellen" msgid "Screws not used:" -msgstr "" +msgstr "nicht genutzte Schrauben:" msgid "Send" msgstr "Senden" @@ -807,7 +807,7 @@ msgid "Show Scrollbars Buttons" msgstr "Zeige Scrollbar Schaltfläche" msgid "Show only devices that are able to be set" -msgstr "" +msgstr "Zeige nur Geräte die eingestellt werden können" msgid "Shutdown" msgstr "Ausschalten" @@ -825,7 +825,7 @@ msgid "Small" msgstr "Klein" msgid "Smooth time" -msgstr "" +msgstr "Erweichungsdauer" msgid "Speed (mm/s)" msgstr "Geschwindigkeit (mm/s)" @@ -856,6 +856,8 @@ msgstr "Starte Update für" msgid "Swaps buttons if they are on top of each other, affects other panels" msgstr "" +"Vertauscht Tasten, wenn sie übereinander liegen, wirkt sich auf andere " +"Bedienfelder aus" msgid "System" msgstr "System" @@ -879,16 +881,16 @@ msgid "The system doesn't meet the minimum requirement" msgstr "Das System entspricht nicht den Mindestanforderungen" msgid "This panel supports up-to 9 screws in a 3x3 Grid" -msgstr "" +msgstr "Dieses Panel unterstützt bis zu 9 Schrauben in einem 3x3 Raster" msgid "This will affect screw positions and mesh graph" -msgstr "" +msgstr "Dies wirkt sich auf die Schraubenpositionen und das Netzdiagramm aus" msgid "Timeout for screen black-out or power-off" -msgstr "" +msgstr "Timeout für dunklen oder ausgeschalteten Bildschirm" msgid "Timeout for screen black-out or power-off during printing" -msgstr "" +msgstr "Timeout für dunklen oder ausgeschalteten Bildschirm während dem Druck" msgid "Total:" msgstr "Gesamt:" @@ -897,7 +899,7 @@ msgid "Unknown Heater" msgstr "Unbekannte Heizung" msgid "Unknown security type" -msgstr "" +msgstr "Unbekannter Sicherheitstyp" msgid "Unload" msgstr "Entladen" @@ -920,13 +922,13 @@ msgid "Updating" msgstr "Aktualisiere" msgid "Useful for un-responsive touchscreens" -msgstr "" +msgstr "Nützlich für nicht reagierende Touchscreens" msgid "WebRTC is not supported by the backend trying Stream" -msgstr "" +msgstr "WebRTC wird vom Backend nicht unterstützt" msgid "Working" -msgstr "" +msgstr "Arbeitet" msgid "XY Move Speed (mm/s)" msgstr "XY Bewegungsgeschwindigkeit (mm/s)" From 3a3287145e40b1dbda19aeed94d75863f4d1375c Mon Sep 17 00:00:00 2001 From: alfrix Date: Sun, 15 Sep 2024 09:54:07 -0300 Subject: [PATCH 006/127] fix: spoolman date parsing --- panels/spoolman.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/panels/spoolman.py b/panels/spoolman.py index 1174b7207..c8da2cb41 100644 --- a/panels/spoolman.py +++ b/panels/spoolman.py @@ -16,13 +16,26 @@ def format_date(date): - try: - return datetime.strptime(date, '%Y-%m-%dT%H:%M:%S.%f').replace(tzinfo=ZoneInfo('UTC')) - except ValueError: + if date.endswith('Z'): + date = f'{date[:-1]}+00:00' + + formats = [ + '%Y-%m-%dT%H:%M:%S.%f%z', + '%Y-%m-%dT%H:%M:%S%z', + '%Y-%m-%dT%H:%M:%S' + ] + for fmt in formats: try: - return datetime.strptime(date, '%Y-%m-%dT%H:%M:%S').replace(tzinfo=ZoneInfo('UTC')) + parsed_date = datetime.strptime(date, fmt) + # If there's no timezone info, assume UTC + if parsed_date.tzinfo is None: + parsed_date = parsed_date.replace(tzinfo=ZoneInfo('UTC')) + return parsed_date except ValueError: - return None + continue + + logging.error(f"Date parsing failed for: {date}") + return None class SpoolmanVendor: From 765ef1b3f61524ec6c6b87d9b474e303a3a0bd3e Mon Sep 17 00:00:00 2001 From: alfrix Date: Sun, 15 Sep 2024 15:02:35 -0300 Subject: [PATCH 007/127] style: change the treeview back to a check it takes less space and the previous implementation looks bad on some systems where the sizes are not respected --- styles/base.css | 28 +++++++++------------- styles/circle.svg | 10 -------- styles/colorized/style.css | 15 +++++++++--- styles/complete.svg | 38 +++++++++++++++++++++++++++++ styles/material-dark/style.css | 4 ++++ styles/material-darker/style.css | 4 ++++ styles/material-light/style.css | 4 ++++ styles/z-bolt/images/complete.svg | 40 +++++++++++++++---------------- styles/z-bolt/style.css | 5 ++++ 9 files changed, 97 insertions(+), 51 deletions(-) delete mode 100644 styles/circle.svg create mode 100644 styles/complete.svg diff --git a/styles/base.css b/styles/base.css index ac3a66810..06459ba70 100644 --- a/styles/base.css +++ b/styles/base.css @@ -32,6 +32,10 @@ window { -gtk-icon-shadow: none; } +treeview.view{ + padding-right: 0.25em; +} + junction { background-color: @bg; } @@ -40,8 +44,7 @@ switch slider { border: 0; } -switch, -treeview.view check { +switch { margin: 0.75em; min-width: 5em; min-height: 2.5em; @@ -50,23 +53,14 @@ treeview.view check { } treeview.view check { - background-color: rgb(32,41,47); - -gtk-icon-source: -gtk-icontheme("switch-off-symbolic"); - background-repeat: no-repeat; - background-position: left center; - background-size : 3em 3em; - background-image: image(url("./styles/circle.svg")); - -gtk-icon-transform: translateX(1.5em); -} -treeview.view check:checked { - background-color : rgb(53,132,228); - background-position: right center; - -gtk-icon-source: -gtk-icontheme("switch-on-symbolic"); - -gtk-icon-transform: translateX(-1.5em); + min-height: 2em; + min-width: 2em; + background-image: none; } -expander label { - padding : 1em; +treeview.view check:checked { + background-image: none; + -gtk-icon-source: url("./styles/complete.svg"); } button { diff --git a/styles/circle.svg b/styles/circle.svg deleted file mode 100644 index 14c0d218b..000000000 --- a/styles/circle.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - diff --git a/styles/colorized/style.css b/styles/colorized/style.css index 76ed43aa8..428bf35b2 100644 --- a/styles/colorized/style.css +++ b/styles/colorized/style.css @@ -109,16 +109,25 @@ popover button { border-color: @solarized-base03; } -treeview.view check, switch { background-color: @solarized-base02; } - -treeview.view check:checked, switch:checked { background-color: @solarized-green; } +treeview.view check { + background-image: none; + background-color: @solarized-base02; + border-radius: .51em; +} + +treeview.view check:checked { + background-image: none; + background-color: @solarized-base02; + -gtk-icon-source: url("./styles/colorized/images/complete.svg"); +} + entry { background-color: @solarized-base02; border-color: @solarized-base03; diff --git a/styles/complete.svg b/styles/complete.svg new file mode 100644 index 000000000..719a4539e --- /dev/null +++ b/styles/complete.svg @@ -0,0 +1,38 @@ + + + + + + diff --git a/styles/material-dark/style.css b/styles/material-dark/style.css index 728deb4b2..8cb9d7621 100644 --- a/styles/material-dark/style.css +++ b/styles/material-dark/style.css @@ -103,6 +103,10 @@ switch:checked { background-color: @echo; } +treeview.view check:checked { + -gtk-icon-source: url("./styles/material-dark/images/complete.svg"); +} + entry { background-color: @active-dark; border-color: @active-dark; diff --git a/styles/material-darker/style.css b/styles/material-darker/style.css index ba724e249..f58e7be3f 100644 --- a/styles/material-darker/style.css +++ b/styles/material-darker/style.css @@ -101,6 +101,10 @@ switch:checked { background-color: #2f5631; } +treeview.view check:checked { + -gtk-icon-source: url("./styles/material-darker/images/complete.svg"); +} + label { color: #e2e2e2; } diff --git a/styles/material-light/style.css b/styles/material-light/style.css index 8ecef12e2..15ba714e1 100644 --- a/styles/material-light/style.css +++ b/styles/material-light/style.css @@ -122,6 +122,10 @@ switch:checked { background-color: @color3; } +treeview.view check:checked { + -gtk-icon-source: url("./styles/material-light/images/complete.svg"); +} + treeview.view check, switch slider, scale trough, diff --git a/styles/z-bolt/images/complete.svg b/styles/z-bolt/images/complete.svg index 6edacfc41..21fbd1d16 100644 --- a/styles/z-bolt/images/complete.svg +++ b/styles/z-bolt/images/complete.svg @@ -1,19 +1,19 @@ + inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> @@ -38,22 +38,24 @@ inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="1600" - inkscape:window-height="837" + inkscape:window-height="829" id="namedview12" showgrid="false" inkscape:pagecheckerboard="false" inkscape:zoom="6.05" - inkscape:cx="29.562225" - inkscape:cy="34.810069" - inkscape:window-x="-8" - inkscape:window-y="-8" + inkscape:cx="38.429752" + inkscape:cy="24.545455" + inkscape:window-x="0" + inkscape:window-y="0" inkscape:window-maximized="1" - inkscape:current-layer="svg10" + inkscape:current-layer="g835" inkscape:snap-bbox="true" inkscape:snap-bbox-edge-midpoints="false" inkscape:document-rotation="0" inkscape:snap-bbox-midpoints="true" - inkscape:snap-others="false" /> + inkscape:snap-others="false" + inkscape:showpageshadow="0" + inkscape:deskcolor="#d1d1d1" /> folder @@ -64,12 +66,8 @@ transform="matrix(0.88461538,0,0,0.88461538,3.6776896,3.6923078)" style="stroke-width:1.13043"> - diff --git a/styles/z-bolt/style.css b/styles/z-bolt/style.css index 1917088d1..7523f00e3 100644 --- a/styles/z-bolt/style.css +++ b/styles/z-bolt/style.css @@ -76,11 +76,16 @@ treeview.view check, switch { background-color: @active; } + treeview.view check:checked, switch:checked { background-color: @switch-scale-bg; } +treeview.view check:checked { + -gtk-icon-source: url("./styles/z-bolt/images/complete.svg"); +} + entry { background-color: @active; border-color: @bg; From bdf03e8d6f69307d965e70a639318b244971dbac Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Mon, 16 Sep 2024 19:09:34 -0300 Subject: [PATCH 008/127] chore: update changelog 0.4.4 --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index abfeb3591..cfeea7944 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,8 @@ # Changelog 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 -## Untagged +## v0.4.4 (Sep 16, 2024) +* support for different moonraker routes * allow showing/hiding cursor from the settings * some wpa-eap support, adds the security type selector and user field * extrude: wait for temp or open temp panel automatically close #1416 From 9854cc99cc2c57836489f4674e2733273fa3b0b9 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Fri, 20 Sep 2024 10:44:15 -0300 Subject: [PATCH 009/127] fix(job_status): format of object height on metadata updates fixes #1458 --- panels/job_status.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panels/job_status.py b/panels/job_status.py index 9ee487ae1..de28541d0 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -833,7 +833,7 @@ def _update_file_metadata(self): self.labels["slicer_time"].set_label(self.format_time(self.file_metadata['estimated_time'])) if "object_height" in self.file_metadata: self.oheight = float(self.file_metadata['object_height']) - self.labels['height'].set_label(f"{self.oheight} {self.mm}") + self.labels['height'].set_label(f"{self.oheight:.2f} {self.mm}") if "filament_total" in self.file_metadata: self.labels['filament_total'].set_label(f"{float(self.file_metadata['filament_total']) / 1000:.1f} m") if "job_id" in self.file_metadata and self.file_metadata['job_id']: From 768bbcd2858daf1f5f8be779d4a9a742fab6205b Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Fri, 20 Sep 2024 11:01:08 -0300 Subject: [PATCH 010/127] fix(job_status): close fullscren dialog automatically on state changes fixes #1455 --- ks_includes/KlippyGtk.py | 3 +++ panels/job_status.py | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ks_includes/KlippyGtk.py b/ks_includes/KlippyGtk.py index 1f0645683..f6df2d134 100644 --- a/ks_includes/KlippyGtk.py +++ b/ks_includes/KlippyGtk.py @@ -256,6 +256,9 @@ def Dialog(self, title, buttons, content, callback=None, *args): return dialog def remove_dialog(self, dialog, *args): + if not isinstance(dialog, Gtk.Dialog): + logging.error(f"Invalid dialog: {dialog}") + return if self.screen.updating: return dialog.destroy() diff --git a/panels/job_status.py b/panels/job_status.py index de28541d0..c23fb1f07 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -16,6 +16,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): title = title or _("Job Status") super().__init__(screen, title) + self.thumb_dialog = None self.grid = Gtk.Grid(column_homogeneous=True) self.pos_z = 0.0 self.extrusion = 100 @@ -700,6 +701,8 @@ def set_state(self, state, msg=""): if self.state != state: logging.debug(f"Changing job_status state from '{self.state}' to '{state}'") self.state = state + if self.thumb_dialog: + self.close_dialog(self.thumb_dialog) self.show_buttons_for_state() def _add_timeout(self, timeout): @@ -775,10 +778,11 @@ def show_fullscreen_thumbnail(self, widget): return image = Gtk.Image.new_from_pixbuf(pixbuf) image.set_vexpand(True) - self._gtk.Dialog(self.filename, None, image, self.close_fullscreen_thumbnail) + self.thumb_dialog = self._gtk.Dialog(self.filename, None, image, self.close_dialog) - def close_fullscreen_thumbnail(self, dialog, response_id): + def close_dialog(self, dialog=None, response_id=None): self._gtk.remove_dialog(dialog) + self.thumb_dialog = None def update_filename(self, filename): if not filename or filename == self.filename: From 688ada6c4e5f6fb8b77f028dd25417088e0870e4 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Fri, 20 Sep 2024 11:38:56 -0300 Subject: [PATCH 011/127] fix: use environment display on xset fixes #1467 --- screen.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/screen.py b/screen.py index 6eb2cffba..cf66472cd 100755 --- a/screen.py +++ b/screen.py @@ -101,7 +101,12 @@ def __init__(self, args): self.connect("key-press-event", self._key_press_event) self.connect("configure_event", self.update_size) display = Gdk.Display.get_default() + self.display_number = os.environ.get('DISPLAY') or ':0' + logging.debug(f"Display for xset: {self.display_number}") monitor_amount = Gdk.Display.get_n_monitors(display) + for i in range(monitor_amount): + m = display.get_monitor(i) + logging.info(f"Screen {i}: {m.get_geometry().width}x{m.get_geometry().height}") try: mon_n = int(args.monitor) if not (-1 < mon_n < monitor_amount): @@ -677,7 +682,7 @@ def wake_screen(self): if self._config.get_main_config().get('screen_blanking') != "off": logging.debug("Screen wake up") if not self.wayland: - os.system("xset -display :0 dpms force on") + os.system(f"xset -display {self.display_number} dpms force on") def set_dpms(self, use_dpms): self.use_dpms = use_dpms @@ -693,21 +698,21 @@ def set_screenblanking_printing_timeout(self, time): def set_screenblanking_timeout(self, time): if not self.wayland: - os.system("xset -display :0 s off") + os.system(f"xset -display {self.display_number} s off") self.use_dpms = self._config.get_main_config().getboolean("use_dpms", fallback=True) if time == "off": logging.debug(f"Screen blanking: {time}") self.blanking_time = 0 if not self.wayland: - os.system("xset -display :0 dpms 0 0 0") + os.system(f"xset -display {self.display_number} dpms 0 0 0") return self.blanking_time = abs(int(time)) logging.debug(f"Changing screen blanking to: {self.blanking_time}") if self.use_dpms and functions.dpms_loaded is True: if not self.wayland: - os.system("xset -display :0 +dpms") + os.system(f"xset -display {self.display_number} +dpms") if functions.get_DPMS_state() == functions.DPMS_State.Fail: logging.info("DPMS State FAIL") self.show_popup_message(_("DPMS has failed to load and has been disabled")) @@ -716,13 +721,13 @@ def set_screenblanking_timeout(self, time): else: logging.debug("Using DPMS") if not self.wayland: - os.system(f"xset -display :0 dpms 0 {self.blanking_time} 0") + os.system(f"xset -display {self.display_number} dpms 0 {self.blanking_time} 0") GLib.timeout_add_seconds(1, self.check_dpms_state) return # Without dpms just blank the screen logging.debug("Not using DPMS") if not self.wayland: - os.system("xset -display :0 dpms 0 0 0") + os.system(f"xset -display {self.display_number} dpms 0 0 0") self.reset_screensaver_timeout() return From d8479220f36d5202f99ece61044873d019ad09ce Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Fri, 20 Sep 2024 16:32:16 -0300 Subject: [PATCH 012/127] fix(network): detection of some security types --- panels/network.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/panels/network.py b/panels/network.py index 7db0415da..6293843fa 100644 --- a/panels/network.py +++ b/panels/network.py @@ -238,7 +238,8 @@ def close_add_network(self): def connect_network(self, widget, ssid, showadd=True): self.deactivate() if showadd and not self.sdbus_nm.is_known(ssid): - if self.sdbus_nm.get_security_type(ssid) in ("Open", "OWE"): + sec_type = self.sdbus_nm.get_security_type(ssid) + if sec_type == "Open" or "OWE" in sec_type: logging.debug("Network is Open do not show psk") result = self.sdbus_nm.add_network(ssid, '') if "error" in result: @@ -307,7 +308,7 @@ def show_add_network(self, widget, ssid): auth_grid.attach(self.labels['network_psk'], 1, 1, 1, 1) auth_grid.attach(save, 2, 0, 1, 2) - if self.sdbus_nm.get_security_type(ssid) == "802.1x": + if "802.1x" in self.sdbus_nm.get_security_type(ssid): user_label.show() self.labels['network_eap_method'].show() self.labels['network_phase2'].show() From f045393dc3ce32302afcdd248a569a7b0b1a405f Mon Sep 17 00:00:00 2001 From: Bobby Graese Date: Fri, 20 Sep 2024 17:14:04 -0500 Subject: [PATCH 013/127] feat: Add InputPupose DIGITS support to keyboard (#1463) Adds support for InputPurpose.DIGITS to the on-screen keyboard. This can be used in places where a number-only input is appropriate, but there may not be a desire to use the large keypad widgets. --- ks_includes/widgets/keyboard.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/ks_includes/widgets/keyboard.py b/ks_includes/widgets/keyboard.py index e9b72cf20..a09dccf5d 100644 --- a/ks_includes/widgets/keyboard.py +++ b/ks_includes/widgets/keyboard.py @@ -23,7 +23,16 @@ def __init__(self, screen, close_cb, entry=None): language = self.detect_language(screen._config.get_main_config().get("language", None)) logging.info(f"Keyboard {language}") - if language == "de": + if self.entry_is_digital(): + self.keys = [ + [ + ["7", "8", "9"], + ["4", "5", "6"], + ["1", "2", "3"], + ["↓", "0", "⌫"] + ] + ] + elif language == "de": self.keys = [ [ ["q", "w", "e", "r", "t", "z", "u", "i", "o", "p", "ü"], @@ -145,6 +154,17 @@ def set_pallet(self, p): self.keyboard.remove_row(0) self.pallet_nr = p columns = 0 + + if self.entry_is_digital(): + for r, row in enumerate(self.keys[p]): + for k, key in enumerate(row): + x = k * 2 + self.keyboard.attach(self.buttons[p][r][k], x, r, 2, 1) + if x > columns: + columns = x + self.show_all() + return + for r, row in enumerate(self.keys[p][:-1]): for k, key in enumerate(row): x = k * 2 + 1 if r == 1 else k * 2 @@ -233,3 +253,6 @@ def toggle_shift(self): widget.get_style_context().add_class("active") else: widget.get_style_context().remove_class("active") + + def entry_is_digital(self): + return self.entry.get_input_purpose() == Gtk.InputPurpose.DIGITS From 822f5400cf96fd3f67309594f4dab07b11ccf7d9 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Thu, 19 Sep 2024 00:46:35 -0300 Subject: [PATCH 014/127] feat: add keyboard to keypad switchs to macro panel --- ks_includes/widgets/keyboard.py | 2 +- panels/gcode_macros.py | 24 +++++++++++++++++++++++- screen.py | 5 ++++- styles/base.css | 8 ++++++++ styles/colorized/style.css | 1 + styles/material-dark/style.css | 1 + styles/material-darker/style.css | 1 + styles/material-light/style.css | 1 + styles/z-bolt/style.css | 1 + 9 files changed, 41 insertions(+), 3 deletions(-) diff --git a/ks_includes/widgets/keyboard.py b/ks_includes/widgets/keyboard.py index a09dccf5d..fc58d299f 100644 --- a/ks_includes/widgets/keyboard.py +++ b/ks_includes/widgets/keyboard.py @@ -209,7 +209,7 @@ def update_entry(self, widget, key): if key == "⌫": Gtk.Entry.do_backspace(self.entry) elif key == "↓": - self.close_cb() + self.close_cb(entry=self.entry) return elif key == "↑": self.toggle_shift() diff --git a/panels/gcode_macros.py b/panels/gcode_macros.py index 9465d6459..10445c027 100644 --- a/panels/gcode_macros.py +++ b/panels/gcode_macros.py @@ -86,18 +86,40 @@ def add_gcode_macro(self, macro): if result: result = result.groupdict() default = result["default"] if "default" in result else "" - entry = Gtk.Entry(placeholder_text=default) + entry = Gtk.Entry(placeholder_text=default, input_purpose=Gtk.InputPurpose.ALPHA) + icon = self._gtk.PixbufFromIcon("hashtag") + entry.set_icon_from_pixbuf(Gtk.EntryIconPosition.SECONDARY, icon) + entry.connect("icon-press", self.on_icon_pressed) self.macros[macro]["params"].update({result["param"]: entry}) for param in self.macros[macro]["params"]: labels.add(Gtk.Label(param)) self.macros[macro]["params"][param].connect("focus-in-event", self._screen.show_keyboard) + self.macros[macro]["params"][param].connect("focus-in-event", self.scroll_to_entry) self.macros[macro]["params"][param].connect("focus-out-event", self._screen.remove_keyboard) labels.add(self.macros[macro]["params"][param]) + def scroll_to_entry(self, entry, event): + self.labels['macros_list'].get_vadjustment().set_value( + entry.get_allocation().y - 50 + ) + + def on_icon_pressed(self, entry, icon_pos, event): + entry.grab_focus() + self._screen.remove_keyboard() + if entry.get_input_purpose() == Gtk.InputPurpose.ALPHA: + entry.set_input_purpose(Gtk.InputPurpose.DIGITS) + entry.get_style_context().add_class("active") + else: + entry.set_input_purpose(Gtk.InputPurpose.ALPHA) + entry.get_style_context().remove_class("active") + self._screen.show_keyboard(entry) + def run_gcode_macro(self, widget, macro): params = "" for param in self.macros[macro]["params"]: + self.macros[macro]["params"][param].set_sensitive(False) # Move focus to prevent + self.macros[macro]["params"][param].set_sensitive(True) # reopening the osk value = self.macros[macro]["params"][param].get_text() if value: if re.findall(r'[G|M]\d{1,3}', macro): diff --git a/screen.py b/screen.py index cf66472cd..9238e74eb 100755 --- a/screen.py +++ b/screen.py @@ -1207,13 +1207,16 @@ def _show_matchbox_keyboard(self, box): } return - def remove_keyboard(self, widget=None, event=None): + def remove_keyboard(self, entry=None, event=None): if self.keyboard is None: return if 'process' in self.keyboard: os.kill(self.keyboard['process'].pid, SIGTERM) self.base_panel.content.remove(self.keyboard['box']) self.keyboard = None + if entry: + entry.set_sensitive(False) # Move the focus + entry.set_sensitive(True) def _key_press_event(self, widget, event): keyval_name = Gdk.keyval_name(event.keyval) diff --git a/styles/base.css b/styles/base.css index 06459ba70..04519f9af 100644 --- a/styles/base.css +++ b/styles/base.css @@ -73,6 +73,7 @@ button { -gtk-icon-shadow: none; } +.active image, button:active, .button_active, button.active { @@ -166,6 +167,13 @@ entry { background-color: @active; border: .2em solid @bg; padding: .2em; + margin-right: .5em; +} + +entry image { + margin: 0 .1em; + border-radius: 1em; + padding: .5em; } label { diff --git a/styles/colorized/style.css b/styles/colorized/style.css index 428bf35b2..15b7b5550 100644 --- a/styles/colorized/style.css +++ b/styles/colorized/style.css @@ -32,6 +32,7 @@ button { background-color: @solarized-base03; } +.active image, button:active { background-color: @solarized-orange; } diff --git a/styles/material-dark/style.css b/styles/material-dark/style.css index 8cb9d7621..581786905 100644 --- a/styles/material-dark/style.css +++ b/styles/material-dark/style.css @@ -58,6 +58,7 @@ button.color4 { border-radius: 1em; } +.active image, button.color1:active, button.color2:active, button.color3:active, diff --git a/styles/material-darker/style.css b/styles/material-darker/style.css index f58e7be3f..a59d55623 100644 --- a/styles/material-darker/style.css +++ b/styles/material-darker/style.css @@ -66,6 +66,7 @@ button.invalid:active, background-color: #424242; } +.active image, button.update { color: #2196f3; background-color: #121212; diff --git a/styles/material-light/style.css b/styles/material-light/style.css index 15ba714e1..daad1a7ea 100644 --- a/styles/material-light/style.css +++ b/styles/material-light/style.css @@ -31,6 +31,7 @@ button label{ color: @text; } +.active image, button:active { background-color: @active; } diff --git a/styles/z-bolt/style.css b/styles/z-bolt/style.css index 7523f00e3..73867f6ed 100644 --- a/styles/z-bolt/style.css +++ b/styles/z-bolt/style.css @@ -58,6 +58,7 @@ button.active { background-color: @active; } +.active image, button.update { background: @color3; border-color: @color3; From 550d955adc45638c3c394f7ff82f90b82f5f2134 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Thu, 19 Sep 2024 00:50:29 -0300 Subject: [PATCH 015/127] refactor: rename digital to digits --- ks_includes/widgets/keyboard.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ks_includes/widgets/keyboard.py b/ks_includes/widgets/keyboard.py index fc58d299f..28f3fedb6 100644 --- a/ks_includes/widgets/keyboard.py +++ b/ks_includes/widgets/keyboard.py @@ -23,7 +23,7 @@ def __init__(self, screen, close_cb, entry=None): language = self.detect_language(screen._config.get_main_config().get("language", None)) logging.info(f"Keyboard {language}") - if self.entry_is_digital(): + if self.purpose_is_digits(): self.keys = [ [ ["7", "8", "9"], @@ -155,7 +155,7 @@ def set_pallet(self, p): self.pallet_nr = p columns = 0 - if self.entry_is_digital(): + if self.purpose_is_digits(): for r, row in enumerate(self.keys[p]): for k, key in enumerate(row): x = k * 2 @@ -254,5 +254,5 @@ def toggle_shift(self): else: widget.get_style_context().remove_class("active") - def entry_is_digital(self): + def purpose_is_digits(self): return self.entry.get_input_purpose() == Gtk.InputPurpose.DIGITS From 5d806a82daf52a7625b01093608bf58f194f7315 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Thu, 19 Sep 2024 10:10:05 -0300 Subject: [PATCH 016/127] feat: add auto alpha to keypad switching if hinted the type in the params --- panels/gcode_macros.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/panels/gcode_macros.py b/panels/gcode_macros.py index 10445c027..816432837 100644 --- a/panels/gcode_macros.py +++ b/panels/gcode_macros.py @@ -79,14 +79,23 @@ def add_gcode_macro(self, macro): "row": row, "params": {}, } - pattern = r'params\.(?P[a-zA-Z0-9_]+)(?:\s*\|.*\s*default\(\s*(?P[^\)]+)\))?' + + pattern = re.compile(r'params\.(?P[a-zA-Z0-9_]+)' + r'(?:\s*\|\s*default\(\s*(?P[^\)]+)\s*\))?' + r'(?:\s*\|\s*(?P[a-zA-Z]+))?') for line in gcode: if line.startswith("{") and "params." in line: result = re.search(pattern, line) if result: result = result.groupdict() - default = result["default"] if "default" in result else "" - entry = Gtk.Entry(placeholder_text=default, input_purpose=Gtk.InputPurpose.ALPHA) + default = result.get("default", "") + hint = result.get("hint", "") + entry = Gtk.Entry(placeholder_text=default) + if hint in ("int", "float"): + entry.set_input_purpose(Gtk.InputPurpose.DIGITS) + entry.get_style_context().add_class("active") + else: + entry.set_input_purpose(Gtk.InputPurpose.ALPHA) icon = self._gtk.PixbufFromIcon("hashtag") entry.set_icon_from_pixbuf(Gtk.EntryIconPosition.SECONDARY, icon) entry.connect("icon-press", self.on_icon_pressed) From 7b857ff99175fee9322dd7fe9908990a6b598b4d Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Thu, 19 Sep 2024 10:16:49 -0300 Subject: [PATCH 017/127] fix: autoscroll now works if the entry is at the very bottom of the scroll the delay is needed because the osk will change the scrolledwindow adjustment, and it's only possible to scroll down more after the keyboard has been shown --- panels/gcode_macros.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/panels/gcode_macros.py b/panels/gcode_macros.py index 816432837..09ca03f76 100644 --- a/panels/gcode_macros.py +++ b/panels/gcode_macros.py @@ -103,12 +103,15 @@ def add_gcode_macro(self, macro): for param in self.macros[macro]["params"]: labels.add(Gtk.Label(param)) - self.macros[macro]["params"][param].connect("focus-in-event", self._screen.show_keyboard) - self.macros[macro]["params"][param].connect("focus-in-event", self.scroll_to_entry) + self.macros[macro]["params"][param].connect("focus-in-event", self.show_keyboard) self.macros[macro]["params"][param].connect("focus-out-event", self._screen.remove_keyboard) labels.add(self.macros[macro]["params"][param]) - def scroll_to_entry(self, entry, event): + def show_keyboard(self, entry, event): + self._screen.show_keyboard(entry, event) + GLib.timeout_add(100, self.scroll_to_entry, entry) + + def scroll_to_entry(self, entry): self.labels['macros_list'].get_vadjustment().set_value( entry.get_allocation().y - 50 ) From 274fc2b2639d9c44605c5adadb6baeb6712579b4 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Thu, 19 Sep 2024 22:04:09 -0300 Subject: [PATCH 018/127] feat: add float option to the keypad --- ks_includes/widgets/keyboard.py | 17 ++++++++++++----- panels/gcode_macros.py | 19 ++++++++++++++----- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/ks_includes/widgets/keyboard.py b/ks_includes/widgets/keyboard.py index 28f3fedb6..a2c1b1a7a 100644 --- a/ks_includes/widgets/keyboard.py +++ b/ks_includes/widgets/keyboard.py @@ -19,11 +19,12 @@ def __init__(self, screen, close_cb, entry=None): self.keyboard.set_direction(Gtk.TextDirection.LTR) self.timeout = self.clear_timeout = None self.entry = entry + self.purpose = self.entry.get_input_purpose() language = self.detect_language(screen._config.get_main_config().get("language", None)) logging.info(f"Keyboard {language}") - if self.purpose_is_digits(): + if self.purpose == Gtk.InputPurpose.DIGITS: self.keys = [ [ ["7", "8", "9"], @@ -32,6 +33,15 @@ def __init__(self, screen, close_cb, entry=None): ["↓", "0", "⌫"] ] ] + elif self.purpose == Gtk.InputPurpose.NUMBER: + self.keys = [ + [ + ["7", "8", "9", "⌫"], + ["4", "5", "6", "+"], + ["1", "2", "3", "-"], + ["↓", "0", ".", "↓"] + ] + ] elif language == "de": self.keys = [ [ @@ -155,7 +165,7 @@ def set_pallet(self, p): self.pallet_nr = p columns = 0 - if self.purpose_is_digits(): + if self.purpose in (Gtk.InputPurpose.DIGITS, Gtk.InputPurpose.NUMBER): for r, row in enumerate(self.keys[p]): for k, key in enumerate(row): x = k * 2 @@ -253,6 +263,3 @@ def toggle_shift(self): widget.get_style_context().add_class("active") else: widget.get_style_context().remove_class("active") - - def purpose_is_digits(self): - return self.entry.get_input_purpose() == Gtk.InputPurpose.DIGITS diff --git a/panels/gcode_macros.py b/panels/gcode_macros.py index 09ca03f76..50f11bf0c 100644 --- a/panels/gcode_macros.py +++ b/panels/gcode_macros.py @@ -82,20 +82,26 @@ def add_gcode_macro(self, macro): pattern = re.compile(r'params\.(?P[a-zA-Z0-9_]+)' r'(?:\s*\|\s*default\(\s*(?P[^\)]+)\s*\))?' - r'(?:\s*\|\s*(?P[a-zA-Z]+))?') + r'(?:\s*\|\s*(?P[a-zA-Z]+))?') for line in gcode: if line.startswith("{") and "params." in line: result = re.search(pattern, line) if result: result = result.groupdict() default = result.get("default", "") - hint = result.get("hint", "") + type_hint = result.get("type_hint", "") entry = Gtk.Entry(placeholder_text=default) - if hint in ("int", "float"): + if type_hint == "int": entry.set_input_purpose(Gtk.InputPurpose.DIGITS) + entry.set_input_hints(Gtk.InputHints.NO_EMOJI) + entry.get_style_context().add_class("active") + elif type_hint == "float": + entry.set_input_purpose(Gtk.InputPurpose.NUMBER) + entry.set_input_hints(Gtk.InputHints.EMOJI) entry.get_style_context().add_class("active") else: entry.set_input_purpose(Gtk.InputPurpose.ALPHA) + entry.set_input_hints(Gtk.InputHints.NONE) icon = self._gtk.PixbufFromIcon("hashtag") entry.set_icon_from_pixbuf(Gtk.EntryIconPosition.SECONDARY, icon) entry.connect("icon-press", self.on_icon_pressed) @@ -120,12 +126,15 @@ def on_icon_pressed(self, entry, icon_pos, event): entry.grab_focus() self._screen.remove_keyboard() if entry.get_input_purpose() == Gtk.InputPurpose.ALPHA: - entry.set_input_purpose(Gtk.InputPurpose.DIGITS) + if entry.get_input_hints() in (Gtk.InputHints.NONE, Gtk.InputHints.EMOJI): + entry.set_input_purpose(Gtk.InputPurpose.NUMBER) + else: + entry.set_input_purpose(Gtk.InputPurpose.DIGITS) entry.get_style_context().add_class("active") else: entry.set_input_purpose(Gtk.InputPurpose.ALPHA) entry.get_style_context().remove_class("active") - self._screen.show_keyboard(entry) + self.show_keyboard(entry, event) def run_gcode_macro(self, widget, macro): params = "" From a262247a2a046d4481d1265b85724d88fe8d52b6 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Fri, 20 Sep 2024 09:57:31 -0300 Subject: [PATCH 019/127] feat: make the osk keypad smaller while landscape --- screen.py | 28 +++++++++++++++++----------- styles/base.css | 4 ++++ 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/screen.py b/screen.py index 9238e74eb..8fe21ee57 100755 --- a/screen.py +++ b/screen.py @@ -1164,22 +1164,28 @@ def show_keyboard(self, entry=None, event=None): if self.keyboard is not None: return - box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) - box.set_size_request(self.gtk.content_width, self.gtk.keyboard_height) - box.set_vexpand(False) + kbd_grid = Gtk.Grid() + kbd_grid.set_size_request(self.gtk.content_width, self.gtk.keyboard_height) + kbd_grid.set_vexpand(False) if self._config.get_main_config().getboolean("use-matchbox-keyboard", False): - return self._show_matchbox_keyboard(box) + return self._show_matchbox_keyboard(kbd_grid) if entry is None: logging.debug("Error: no entry provided for keyboard") return - box.get_style_context().add_class("keyboard_box") - box.add(Keyboard(self, self.remove_keyboard, entry=entry)) - self.keyboard = {"box": box} - self.base_panel.content.pack_end(box, False, False, 0) + purpose = entry.get_input_purpose() + kbd_width = 1 + if not self.vertical_mode and purpose in (Gtk.InputPurpose.DIGITS, Gtk.InputPurpose.NUMBER): + 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_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() - def _show_matchbox_keyboard(self, box): + def _show_matchbox_keyboard(self, kbd_grid): env = os.environ.copy() usrkbd = os.path.expanduser("~/.matchbox/keyboard.xml") if os.path.isfile(usrkbd): @@ -1193,8 +1199,8 @@ def _show_matchbox_keyboard(self, box): logging.debug(f"PID {p.pid}") keyboard = Gtk.Socket() - box.get_style_context().add_class("keyboard_matchbox") - box.pack_start(keyboard, True, True, 0) + kbd_grid.get_style_context().add_class("keyboard_matchbox") + kbd_grid.attach(keyboard, 0, 0, 1, 1) self.base_panel.content.pack_end(box, False, False, 0) self.show_all() diff --git a/styles/base.css b/styles/base.css index 04519f9af..23a08409e 100644 --- a/styles/base.css +++ b/styles/base.css @@ -644,3 +644,7 @@ flowbox button { margin: 0.1em; padding: .5em; } + +keyboard_box { + padding: 0 20em; +} \ No newline at end of file From 585f477e51169c54a78656ef2336b4eb54dcd376 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Fri, 20 Sep 2024 18:06:04 -0300 Subject: [PATCH 020/127] fix: keyboard not switching entry --- ks_includes/widgets/keyboard.py | 1 - panels/gcode_macros.py | 2 -- screen.py | 10 +++++----- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/ks_includes/widgets/keyboard.py b/ks_includes/widgets/keyboard.py index a2c1b1a7a..2545a35f2 100644 --- a/ks_includes/widgets/keyboard.py +++ b/ks_includes/widgets/keyboard.py @@ -22,7 +22,6 @@ def __init__(self, screen, close_cb, entry=None): self.purpose = self.entry.get_input_purpose() language = self.detect_language(screen._config.get_main_config().get("language", None)) - logging.info(f"Keyboard {language}") if self.purpose == Gtk.InputPurpose.DIGITS: self.keys = [ diff --git a/panels/gcode_macros.py b/panels/gcode_macros.py index 50f11bf0c..f5de5642c 100644 --- a/panels/gcode_macros.py +++ b/panels/gcode_macros.py @@ -123,8 +123,6 @@ def scroll_to_entry(self, entry): ) def on_icon_pressed(self, entry, icon_pos, event): - entry.grab_focus() - self._screen.remove_keyboard() if entry.get_input_purpose() == Gtk.InputPurpose.ALPHA: if entry.get_input_hints() in (Gtk.InputHints.NONE, Gtk.InputHints.EMOJI): entry.set_input_purpose(Gtk.InputPurpose.NUMBER) diff --git a/screen.py b/screen.py index 8fe21ee57..59d4fa831 100755 --- a/screen.py +++ b/screen.py @@ -1161,18 +1161,18 @@ def retry_init_tempstore(self): return self.init_tempstore() def show_keyboard(self, entry=None, event=None): - if self.keyboard is not None: + if entry is None: + logging.debug("Error: no entry provided for keyboard") return - + if self.keyboard is not None: + self.remove_keyboard() + entry.grab_focus() kbd_grid = Gtk.Grid() kbd_grid.set_size_request(self.gtk.content_width, self.gtk.keyboard_height) kbd_grid.set_vexpand(False) if self._config.get_main_config().getboolean("use-matchbox-keyboard", False): return self._show_matchbox_keyboard(kbd_grid) - if entry is None: - logging.debug("Error: no entry provided for keyboard") - return purpose = entry.get_input_purpose() kbd_width = 1 if not self.vertical_mode and purpose in (Gtk.InputPurpose.DIGITS, Gtk.InputPurpose.NUMBER): From c20d0a2f843c0471dd3fcc4561c04b62921d21b0 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sat, 21 Sep 2024 05:27:57 -0300 Subject: [PATCH 021/127] fix: keyboard getting doubled if switching entry via the input switch icon got mistakenly removed in previous commit 585f477e51169c54a78656ef2336b4eb54dcd376 --- panels/gcode_macros.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/panels/gcode_macros.py b/panels/gcode_macros.py index f5de5642c..50f11bf0c 100644 --- a/panels/gcode_macros.py +++ b/panels/gcode_macros.py @@ -123,6 +123,8 @@ def scroll_to_entry(self, entry): ) def on_icon_pressed(self, entry, icon_pos, event): + entry.grab_focus() + self._screen.remove_keyboard() if entry.get_input_purpose() == Gtk.InputPurpose.ALPHA: if entry.get_input_hints() in (Gtk.InputHints.NONE, Gtk.InputHints.EMOJI): entry.set_input_purpose(Gtk.InputPurpose.NUMBER) From 8cda8b62a6581608514af12f938609d15c8e15c3 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sat, 21 Sep 2024 06:40:57 -0300 Subject: [PATCH 022/127] chore: update changelog --- CHANGELOG.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cfeea7944..05853edd2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog -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 +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.4-* + +* feat: keyboard to keypad input switch with auto pre-selection ## v0.4.4 (Sep 16, 2024) * support for different moonraker routes @@ -19,7 +24,7 @@ This just tracks the most notable changes, if you want all the details checkout * gcodes: add extra info to confirm print * zcalibrate: add a dropdown with the function name to select * job_status: auto-estimated time: use last print time if available -* gcodes: add option to delete in the confirm +* gcodes: add option to delete in the confirmation ## v0.4.2 (Jun 10, 2024) * job_status: remove the status message and use the titlebar for that @@ -85,7 +90,7 @@ This just tracks the most notable changes, if you want all the details checkout * add moonraker warnings ## v0.3.6 (Sep 24, 2023) -* Led light control, close #991 (#1106) +* LED light control, close #991 (#1106) * pause will auto-open extrude * macros: hide the panel if there are no elegible macros * job_status: click thumbnail for fullscreen thumbnail @@ -256,7 +261,7 @@ The Project changed maintainer [alfrix](github.com/alfrix) ## v0.1.4 (Feb 15, 2021) * network: Show wifi information -* screen_panel: Put icons on a side bar instead of on the header +* screen_panel: Put icons on a sidebar instead of on the header * printer: Include quad_gantry_level * wifi: Initial wifi class * job_status/settings: Allow different file estimation methods From 832a86ed6ef9abc4d3fc261a7ffea7a017b03123 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Mon, 23 Sep 2024 21:12:25 -0300 Subject: [PATCH 023/127] fix: shutdown not working when not connected --- panels/shutdown.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/panels/shutdown.py b/panels/shutdown.py index ab0f2cffb..cd9b40493 100644 --- a/panels/shutdown.py +++ b/panels/shutdown.py @@ -41,11 +41,10 @@ def reboot_poweroff(self, widget, method): label.set_label(_("Are you sure you wish to shutdown the system?")) title = _("Shutdown") buttons = [] - logging.info(self._screen.apiclient.endpoint) - local = {"127.0.0.1", "localhost"} - if any(endpoint in self._screen.apiclient.endpoint for endpoint in local): + if self._screen.apiclient is None or self._screen.apiclient.endpoint in ("127.0.0.1", "localhost"): buttons.append({"name": _("Accept"), "response": Gtk.ResponseType.ACCEPT, "style": 'dialog-primary'}) else: + logging.info(self._screen.apiclient.endpoint) buttons.extend([ {"name": _("Host"), "response": Gtk.ResponseType.OK, "style": 'dialog-info'}, {"name": _("Printer"), "response": Gtk.ResponseType.APPLY, "style": 'dialog-warning'}, From 66e8a09a660003dbb87d15c77b3c57c9659630d7 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Tue, 24 Sep 2024 16:52:21 -0300 Subject: [PATCH 024/127] fix: wait for moonraker if present, this will aid those slow system to not fail the connection on startup and having to retry --- scripts/KlipperScreen.service | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/KlipperScreen.service b/scripts/KlipperScreen.service index 234c1f2c4..bf209488c 100644 --- a/scripts/KlipperScreen.service +++ b/scripts/KlipperScreen.service @@ -9,6 +9,7 @@ ConditionPathExists=/dev/tty0 # D-Bus is necessary for contacting logind, which is required. Wants=dbus.socket systemd-logind.service After=dbus.socket systemd-logind.service +After=moonraker.service [Service] Type=simple From 4596c48297a18ab8af30da4b89231cc24162f7ac Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Tue, 24 Sep 2024 16:53:02 -0300 Subject: [PATCH 025/127] docs: add how to do multi instances on the same host --- docs/Multi_instance.md | 132 +++++++++++++++++++++++++++++++++++++++++ mkdocs.yml | 1 + 2 files changed, 133 insertions(+) create mode 100644 docs/Multi_instance.md diff --git a/docs/Multi_instance.md b/docs/Multi_instance.md new file mode 100644 index 000000000..c66d765da --- /dev/null +++ b/docs/Multi_instance.md @@ -0,0 +1,132 @@ +Multiple instances of KlipperScreen + +*Dificulty: Advanced* + +This article describes different methods of adding remote desktop clients (VNC or Xserver-XSDL) that do not support installing KS directly. +If your remote device runs GNU/Linux then you should install KlipperScreen directly, instead of the methods described below. + +The instances will be independent of each other and not a mirror. + +## Notes on Performance + +Beware that running multiple instances on the same device at the same time will consume more resources (memory and processing time) +and can be taxing on lower end hardware, in my testing even a Raspberry Pi 3A can run multiple instances of KS, +providing that it doesn't have any cameras or other advanced features. + +!!! tip + You can view the system resource usage in the "System" panel of KlipperScreen or directly at the console with htop + Beware that even if the load seems okay at idle, during a print heavy dynamic loads can push the device over the threshold + and that may result in a Klipper error/failure, if it's running on the same device. + +Performance will heavily depend on the devices used, +if one of the devices is connected through the network, like for example a VNC client or Android Xserver-XSDL client, +then the network will influence the response time of the interface. + +## Option 1: Using the startup script method + +*Advantage:* relatively easy to setup + +*Disadvantage:* starting or stopping the service will affect all the instances + +The default KlipperScreen service will launch the script + +```sh +nano $HOME/KlipperScreen/scripts/launch_KlipperScreen.sh +``` + +Example script: + +```sh +#!/bin/bash +/usr/bin/xinit $KS_XCLIENT & +DISPLAY=192.168.18.147:0 $KS_XCLIENT -c $HOME/.config/KlipperScreen/tablet.cfg & +wait +``` + +In this example the script launches a local instance for a screen connected to the host +then it launches a server for xserver-xsdl client that is running at the defined IP, +notice that the second instance uses a configuration that is specific to itself. + +Dont forget to restart the service to load the changes +```sh +sudo systemctl restart KlipperScreen +``` + +## Option 2: Using a separate service + +*Advantage:* stopping and starting the service will only affect the desired instance + +*Disadvantage:* configuration and setup is more complex + +Create a new service unit file + +```sh +sudo nano /etc/systemd/system/KlipperScreen_tablet.service +``` + +Example of a service unit for an android tablet: (change the IP and username) +```ini title="KlipperScreen_tablet.service" +[Unit] +Description=KlipperScreen Tablet +StartLimitIntervalSec=0 +After=systemd-user-sessions.service plymouth-quit-wait.service +ConditionPathExists=/dev/tty0 +Wants=dbus.socket systemd-logind.service +After=dbus.socket systemd-logind.service +After=moonraker.service + +[Service] +Type=simple +Restart=always +RestartSec=2 +SupplementaryGroups=klipperscreen +# username +User=pi +WorkingDirectory=/home/pi/KlipperScreen +Environment="DISPLAY=192.168.18.147:0" +# Absolute paths are required, separate config is optional +ExecStart=/home/pi/.KlipperScreen-env/bin/python /home/pi/KlipperScreen/screen.py -c /home/pi/.config/KlipperScreen/tablet.cfg + +[Install] +WantedBy=multi-user.target +``` + +Test your new service +```sh +sudo systemctl start KlipperScreen_tablet +``` + +Optional: After veryfing it works, make it load when the system starts +```sh +sudo systemctl enable KlipperScreen_tablet +``` + +if you made a mistake in the config you'll have to reload the service unit +```sh +sudo systemctl daemon-reload +``` + +Add the new service to moonraker so it can be started and stopped from the UI +```sh +nano $HOME/printer_data/moonraker.asvc +``` +In the example above it was `KlipperScreen_tablet`. Beware that is case sensitive + +So in this case it would look something like this: +``` title="moonraker.asvc" +klipper_mcu +webcamd +MoonCord +KlipperScreen +KlipperScreen_tablet +moonraker-telegram-bot +moonraker-obico +sonar +crowsnest +octoeverywhere +``` + +Restart moonraker +```sh +sudo systemctl restart moonraker +``` diff --git a/mkdocs.yml b/mkdocs.yml index 40e481702..dc0a6682d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -22,6 +22,7 @@ nav: - Remote screens: - VNC.md - Xserver-XSDL (Android): Android.md + - Multi_instance.md - Troubleshooting: - First Steps/Log: Troubleshooting.md - Network: Troubleshooting/Network.md From ac5e7ae06560bb058553daf9e069aa6356caabe4 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sat, 28 Sep 2024 01:40:51 -0300 Subject: [PATCH 026/127] refactor(job_status): initialize vars separately --- panels/job_status.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/panels/job_status.py b/panels/job_status.py index c23fb1f07..b93be8531 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -26,19 +26,29 @@ def __init__(self, screen, title): self.oheight = 0.0 self.current_extruder = None self.fila_section = pi * ((1.75 / 2) ** 2) - self.filename_label = self.filename = self.prev_pos = self.prev_gpos = None + self.filename_label = None + self.filename = None + self.prev_pos = None + self.prev_gpos = None self.can_close = False - self.flow_timeout = self.animation_timeout = None + self.flow_timeout = None + self.animation_timeout = None self.file_metadata = self.fans = {} self.state = "standby" self.timeleft_type = "auto" - self.progress = self.zoffset = self.flowrate = self.vel = 0.0 + self.progress = 0.0 + self.zoffset = 0.0 + self.flowrate = 0.0 + self.vel = 0.0 self.flowstore = [] self.mm = _("mm") self.mms = _("mm/s") self.mms2 = _("mm/s²") self.mms3 = _("mm³/s") - self.status_grid = self.move_grid = self.time_grid = self.extrusion_grid = None + self.status_grid = None + self.move_grid = None + self.time_grid = None + self.extrusion_grid = None data = ['pos_x', 'pos_y', 'pos_z', 'time_left', 'duration', 'slicer_time', 'file_time', 'filament_time', 'est_time', 'speed_factor', 'req_speed', 'max_accel', 'extrude_factor', 'zoffset', From 40b5fbf2cf58e9495cd9f2d76ece53f94d9d3df9 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sat, 28 Sep 2024 08:47:30 -0300 Subject: [PATCH 027/127] fix(job_status): animation timeout --- panels/job_status.py | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/panels/job_status.py b/panels/job_status.py index b93be8531..a867e40ef 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -339,11 +339,16 @@ def on_draw(self, da, ctx): def activate(self): if self.flow_timeout is None: self.flow_timeout = GLib.timeout_add_seconds(2, self.update_flow) + if self.animation_timeout is None: + self.animation_timeout = GLib.timeout_add(500, self.animate_label) def deactivate(self): if self.flow_timeout is not None: GLib.source_remove(self.flow_timeout) self.flow_timeout = None + if self.animation_timeout is not None: + GLib.source_remove(self.animation_timeout) + self.animation_timeout = None def create_buttons(self): @@ -797,9 +802,6 @@ def close_dialog(self, dialog=None, response_id=None): def update_filename(self, filename): if not filename or filename == self.filename: return - if self.animation_timeout is not None: - GLib.source_remove(self.animation_timeout) - self.animation_timeout = None self.filename = filename logging.debug(f"Updating filename to {filename}") @@ -808,18 +810,9 @@ def update_filename(self, filename): "complete": self.labels['file'].get_label(), "current": self.labels['file'].get_label(), } - - if ellipsized := self.labels['file'].get_layout().is_ellipsized(): - self.animation_timeout = GLib.timeout_add(500, self.animate_label) - else: - self.animation_timeout = None - self.get_file_metadata() def animate_label(self): - if not self.filename_label or self.animation_timeout is None: - return False - if ellipsized := self.labels['file'].get_layout().is_ellipsized(): self.filename_label['current'] = self.filename_label['current'][1:] self.labels['file'].set_label(self.filename_label['current'] + " " * 6) From 71eef9ee1f23aa4fd6b68169cfe5dd7908e478b2 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Tue, 1 Oct 2024 19:17:53 -0300 Subject: [PATCH 028/127] fix(base_panel): handle pixbuf is None, this would happen if the theme was incomplete and didn't load --- panels/base_panel.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/panels/base_panel.py b/panels/base_panel.py index d4d953350..1e8c17d1e 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -24,23 +24,23 @@ def __init__(self, screen, title=None): self.last_usage_report = datetime.now() self.usage_report = 0 # Action bar buttons - abscale = self.bts * 1.1 - self.control['back'] = self._gtk.Button('back', scale=abscale) + self.abscale = self.bts * 1.1 + self.control['back'] = self._gtk.Button('back', scale=self.abscale) self.control['back'].connect("clicked", self.back) - self.control['home'] = self._gtk.Button('main', scale=abscale) + self.control['home'] = self._gtk.Button('main', scale=self.abscale) self.control['home'].connect("clicked", self._screen._menu_go_back, True) for control in self.control: self.set_control_sensitive(False, control) - self.control['estop'] = self._gtk.Button('emergency', scale=abscale) + self.control['estop'] = self._gtk.Button('emergency', scale=self.abscale) self.control['estop'].connect("clicked", self.emergency_stop) self.control['estop'].set_no_show_all(True) self.shutdown = { "panel": "shutdown", } - self.control['shutdown'] = self._gtk.Button('shutdown', scale=abscale) + self.control['shutdown'] = self._gtk.Button('shutdown', scale=self.abscale) self.control['shutdown'].connect("clicked", self.menu_item_clicked, self.shutdown) self.control['shutdown'].set_no_show_all(True) - self.control['printer_select'] = self._gtk.Button('shuffle', scale=abscale) + self.control['printer_select'] = self._gtk.Button('shuffle', scale=self.abscale) self.control['printer_select'].connect("clicked", self._screen.show_printer_select) self.control['printer_select'].set_no_show_all(True) @@ -48,7 +48,7 @@ def __init__(self, screen, title=None): "panel": "gcode_macros", "icon": "custom-script", } - self.control['shortcut'] = self._gtk.Button(self.shorcut['icon'], scale=abscale) + self.control['shortcut'] = self._gtk.Button(self.shorcut['icon'], scale=self.abscale) self.control['shortcut'].connect("clicked", self.menu_item_clicked, self.shorcut) self.control['shortcut'].set_no_show_all(True) @@ -114,9 +114,13 @@ def reload_icons(self): img = button.get_image() name = button.get_name() pixbuf = img.get_pixbuf() - width = pixbuf.get_width() - height = pixbuf.get_height() - button.set_image(self._gtk.Image(name, width, height)) + if pixbuf is not None: + logging.error(f"Couldn't get pixbuf for {name}," + f"a custom theme may have caused this") + size = pixbuf.get_width() + else: + size = self._gtk.img_scale * self.abscale * 1.4 + button.set_image(self._gtk.Image(name, size, size)) def show_heaters(self, show=True): try: From 7b7b7c54e11cba66cd667f3ccd3e432afb812b61 Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Wed, 9 Oct 2024 21:41:02 +0200 Subject: [PATCH 029/127] chore(locales): Translations update from Hosted Weblate (#1471) * Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (318 of 318 strings) Co-authored-by: Will Zhai Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/zh_Hans/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (318 of 318 strings) Co-authored-by: Neko.vecter Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/zh_Hans/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Portuguese) Currently translated at 91.5% (291 of 318 strings) Co-authored-by: Paulo Henrique Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/pt/ Translation: KlipperScreen/KlipperScreen --------- Co-authored-by: Will Zhai Co-authored-by: Neko.vecter Co-authored-by: Paulo Henrique --- .../locales/bg/LC_MESSAGES/KlipperScreen.mo | Bin 0 -> 478 bytes .../locales/pt/LC_MESSAGES/KlipperScreen.mo | Bin 15233 -> 16334 bytes .../locales/pt/LC_MESSAGES/KlipperScreen.po | 64 +++++++++--------- .../zh_CN/LC_MESSAGES/KlipperScreen.mo | Bin 17760 -> 17773 bytes .../zh_CN/LC_MESSAGES/KlipperScreen.po | 14 ++-- 5 files changed, 39 insertions(+), 39 deletions(-) create mode 100644 ks_includes/locales/bg/LC_MESSAGES/KlipperScreen.mo diff --git a/ks_includes/locales/bg/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/bg/LC_MESSAGES/KlipperScreen.mo new file mode 100644 index 0000000000000000000000000000000000000000..fa19718fa9ae42088f69439e091d7fb42819d247 GIT binary patch literal 478 zcmZ9I-%i3X6vj1r)l09vsEHRE?ItEBSim@B=;8)sfdB3aJC^Bao3@}nh;QI?`7CxU z5#yKq(w_93lke;I&i3bq)23tBvG3S&96L(Y9bfM8+?{35uLfGaz|@i`BX^)pE(OKy zMZuZQnZO6PMXnU+;Zy^NLzIG&+LFZZJR|J|H)JF!MuR>{VVRfHq{A#w{1^r)N&2J{ z;F~^8qNAsNFGMjjmW(tLreIcTio4@D#=Rg3aWhPUD839joirQ{FI=nO3&w$rfX)9} zYR;@xhWh?Y8Vi~C1{1doJgK>_sxZcXt!$f>?SIvT`|I@-PdG}VBwVMjc_-*f3Jbz{ z{ZKB9g?H<#g5{!tr!%Gv*w%Q|CG~Y*nduoc3B^=qx!@GnC%Hv~Vxd_C;##X_x0 j(>iV7>e>=`uZ3$3^gymbfUbV!zKVp;ygJEXi8g)!5=oIS literal 0 HcmV?d00001 diff --git a/ks_includes/locales/pt/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/pt/LC_MESSAGES/KlipperScreen.mo index 3c9afd1b1f27287fd23de0120cdf2ec47475cd0e..1548ecd6f004ff42638b1e081a066e1aaecc2cd0 100644 GIT binary patch delta 7171 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 diff --git a/ks_includes/locales/pt/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/pt/LC_MESSAGES/KlipperScreen.po index 37a353294..3c7de5e52 100644 --- a/ks_includes/locales/pt/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/pt/LC_MESSAGES/KlipperScreen.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-06-27 18:24-0300\n" -"PO-Revision-Date: 2024-08-09 23:09+0000\n" -"Last-Translator: Matheus Mösken Diegues \n" +"PO-Revision-Date: 2024-10-05 13:15+0000\n" +"Last-Translator: Paulo Henrique \n" "Language-Team: Portuguese \n" "Language: pt\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.7-dev\n" +"X-Generator: Weblate 5.8-dev\n" #, python-format msgid "%s will be updated to version" @@ -92,13 +92,13 @@ msgid "Auto-calibrate" msgstr "Calibrar automaticamente" msgid "Auto-close notifications" -msgstr "Fechar notificações autom." +msgstr "Fechamento Automático das Notificações" msgid "Auto-open Extrude On Pause" msgstr "Abrir Ext. automaticamente em Pausa" msgid "Auto-scroll" -msgstr "Acompanhar Conteúdo" +msgstr "Rolar Automaticamente" msgid "Bed Level" msgstr "Nível da Mesa" @@ -219,7 +219,7 @@ msgid "Disable for 12hs with am / pm" msgstr "" msgid "Disconnect" -msgstr "" +msgstr "Desconectar" msgid "Distance (mm)" msgstr "Distancia (mm)" @@ -260,13 +260,13 @@ msgid "Error: Couldn't get a position to probe" msgstr "Erro: Não foi possível obter uma posição para a sonda" msgid "Estimated Time" -msgstr "" +msgstr "Tempo estimado" msgid "Estimated Time Method" msgstr "Método de Tempo Estimado" msgid "Example" -msgstr "" +msgstr "Exemplo" msgid "Exclude Object" msgstr "Excluir Objeto" @@ -290,7 +290,7 @@ msgid "Failed to delete connection" msgstr "" msgid "Failed to initialize" -msgstr "" +msgstr "Falha ao inicializar" msgid "Failed, adjust position first" msgstr "Falhou, ajuste a posição primeiro" @@ -344,16 +344,16 @@ msgid "Font Size" msgstr "Tamanho da fonte" msgid "Forget" -msgstr "" +msgstr "Esquecer" msgid "Full Update" msgstr "Atualizar Tudo" msgid "Gcodes" -msgstr "" +msgstr "Gcodes" msgid "Getting IP address" -msgstr "" +msgstr "Obter Endereço IP" msgid "Go Back" msgstr "Voltar" @@ -410,7 +410,7 @@ msgid "Input Shaper" msgstr "Moldagem Assistiva" msgid "Insufficient privileges" -msgstr "" +msgstr "Privilégios insuficientes" msgid "Interface" msgstr "Interface" @@ -480,7 +480,7 @@ msgid "Last Used" msgstr "Último Usado" msgid "Layer Height" -msgstr "" +msgstr "Altura da Camada" msgid "Layer:" msgstr "Camada:" @@ -528,7 +528,7 @@ msgid "Max Velocity" msgstr "Velocidade máxima" msgid "Max:" -msgstr "" +msgstr "Max:" msgid "Maximum" msgstr "Máximo" @@ -546,7 +546,7 @@ msgid "Medium" msgstr "Médio" msgid "Memory" -msgstr "" +msgstr "Memória" msgid "Menu" msgstr "Menu" @@ -555,7 +555,7 @@ msgid "Minimum Cruise Ratio" msgstr "" msgid "Minimum:" -msgstr "" +msgstr "Minimo:" msgid "Modified" msgstr "Modificado" @@ -579,13 +579,13 @@ msgid "Network" msgstr "Rede" msgid "Network connected" -msgstr "" +msgstr "Conectado à rede" msgid "Network disconnected" -msgstr "" +msgstr "desconectado da rede" msgid "Network not found" -msgstr "" +msgstr "Rede não encontrada" msgid "Never" msgstr "Nunca" @@ -597,7 +597,7 @@ msgid "No elegible macros:" msgstr "Sem macros elegíveis:" msgid "No info available" -msgstr "" +msgstr "Sem informações disponíveis" msgid "No mesh has been loaded" msgstr "Nenhuma malha foi carregada" @@ -621,7 +621,7 @@ msgid "Notifications" msgstr "Notificações" msgid "Nozzle diameter" -msgstr "" +msgstr "Diâmetro do Bico" msgid "Only for the move panel" msgstr "" @@ -660,7 +660,7 @@ msgid "Please recompile and flash the micro-controller." msgstr "Por favor, recompile e atualize o microcontrolador." msgid "Please wait" -msgstr "" +msgstr "Por favor, aguarde" msgid "Power" msgstr "Ligar" @@ -726,7 +726,7 @@ msgid "Refresh" msgstr "Recarregar" msgid "Remove network" -msgstr "" +msgstr "Remover Rede" msgid "Rename/Move:" msgstr "Renomear/Mover:" @@ -762,7 +762,7 @@ msgid "Save" msgstr "Salvar" msgid "Save Config" -msgstr "Salvar Config." +msgstr "Salvar Configurações" msgid "Save Z" msgstr "Salvar Eixo Z" @@ -796,7 +796,7 @@ msgid "Set Temp" msgstr "Definir Temperatura" msgid "Settings" -msgstr "Definições" +msgstr "Configurações" msgid "Show" msgstr "Mostrar" @@ -868,10 +868,10 @@ msgid "System Shutdown" msgstr "Desligar Sistema" msgid "System:" -msgstr "" +msgstr "Sistema:" msgid "Temp (°C)" -msgstr "Temp (°C)" +msgstr "Temperatura (°C)" msgid "Temperature" msgstr "Temperatura" @@ -955,8 +955,8 @@ msgstr[1] "compromete" msgid "day" msgid_plural "days" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Dia" +msgstr[1] "Dias" msgid "g" msgstr "" @@ -994,8 +994,8 @@ msgstr "" msgid "second" msgid_plural "seconds" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Segundo" +msgstr[1] "Segundos" #~ msgid "Mesh calibrate" #~ msgstr "Calibrar Malha" diff --git a/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.mo index 7377044e657064b64b59e2e473a0b58cd027ed9d..b9788cfdc1a8863e6a1cb8559e0ad4e684c751dd 100644 GIT binary patch delta 2647 zcmY+^duZ2H7{~Fmt;}6)=B7?JYcf-&jX5`Un{An!Wb>AHBxVe8Aj~yfBAM`m8YXH9 zZkZQab{T|d6E>%1NsJ&bP>~En$YyRDt?Yu6qEWp+`+oijWUuo)=bYzUJl|jMp15E3 z#GOh{iuJ^WuqHo*j1a<%f)G-$5|eQS@-I~LXDsf=5!i+rcf#>UIEMH$$5-q%oJ#(N z9XTt6MB;p$j3u)|EIdr(SrT%GJ#5d~tEdg!Lv0|XFxo&Gjv>y*JS=p+#@3_8zl2)& zWykv*Hy6gDLT@>795Wf%>49IPPI}e-eU9&-ZtQQHUKAZ554GSD$E#2$-RgXcJ&KzD zZp?{us2k`;?evBnKy6^q#?OxWQ&9^|z~LKkT!<=MiZgMQ^G$XyYWx9A#aJ5+EpQqq zVK=I9FQ(&doQgv@4s+&26H8I^s!$8AL(OYI-QafHY}@T+%%T4_GCvlQ=SBrGPz4H5 zg^L|8v`bJovkLV%tLUa7L#TS4_8h8iH;%=xFqQQ~KMfTgL{0eD@rdFm z9*vqX-f^BS!Zh;pQ1h4D^{9n5;_!_)-i{BDZ^DOgpZZxpw9-(4HYKnfr(+kY&<*GB zI3C0#^6@3nO^iat6YLaJoqSZ?IT(-gov%RMP!+~>b+t6K(2I5#sz9?n;`}?Pi65dC zykvW9FFs9v0QHz>mqvA0<0#@99EZ(kY;*<0I{a+xV9rvIXx{JEHKT!+BKOUKgDm)rh zFdH>4&;4_qFGtV=3yDSL1YSblhq?QE%lEY9rsFHr9ta!0(Qe%A=ExN7c(j zjVnMcT#lN*4B1dDtf8TS&$(k8>bHDnG$0&zz7tj89ID`D$KN{s5mk85@eu07iBClJ z(@^tsQTY-~(f40LLmPMo`8f}@sDVdN3mr!lK7&*6yuIoC$obK@RGWo*%(IP1r7VJXR`vNE9m&i{^_ziWC85PmN)>b?c zefM=FRA4XaByV^?TXSw&=I|Z;Kt?5hMQ!aKPQ!%CsKN|Xg(}R%)u_8`K>haZLjB~l zpg!z&)K))te-EnuO-#U_?48Q6Y`EhO61jBzg;OwRVKiY8#uG2c`*5Z6>+A+p!A*8^ zM`C(oW^(qTn)>XjziVnt2Dwx%O mYX7Y_yZU!`^_@N0clNbghtA)A|KseME%^;wI=-3xdg_0SPcNDP delta 2632 zcmXZceN2{B7{~GRNV5cr5=9dvRDyg5Q8ej6M36Myuvx>+&6UNRv-+c@qZjX0Q`Ay3 zn7Nu-l%mcNjcJ>L&DNTmt7VokTfUS8EgQ?F%ca)$*ZtcVpL1RJIoEl4&VB!}DRE&_ zqJ2ne^jRW=$0mm`JcKZ`ID~YZglSlY{Dm6+4aEi=h+9$pwmbe12NNG~+-1MO0`e#A z6&yr-@01Wm;g~5Q3b{0@Nyw+{>$b%nM=jt2Y5~_!3%H4cF|{Owi8vCKf5g_I`ag}D zc$MSTj$bK>;sK3LG-Ea$ce&#cRKeqZ{urlYhGTes78xIfTQpQ4ZF*cF zA60m~;~91q>SX4kE@!P>irUc%)Q(<4E#M8*f?91Gs_r2iil1W!^M`I4D%^(}aK-U; z$0;-70ja3xdA1NUi6^1PSK0-ri5|!QPsH&`yq)|SyayvaXa2B_h6?OZ0$Xq#?nf2+ z&iRXu`!JRKRn$p@2je*14nx%$jjB5q2VjZwrKl51Vx*&6LPHa+vJI#L>+NRen^6Nl zKrNulp0KBJ9{F>q%lyF1xNZ&JNxT@d@JYQRLh%Z;eluL-sCeW-zlobPme%66j` zcHZ{efBifo8Q0B1^~cH>idEfZD(%$2U z-G%CxkD9m`HGVd-(I`AjLlZyh2P;tD^5^0XVW;!0r~+-Mg2x=6bo?W#aG&FT)Jfhz z)gL%39-o8CPr!7&|D`n4VGi;c4@*!JZAMMB6IJ*C=Hn;!jPw7X`VFXv%|Kn|9MrfX zJKdJsYD|wp2n*D}C8z=Qj-RnFI^XDc3+i&chg$ev)Q&n)AC@msKS?*L?w|G+>h(*T z9nUiwBXt<-M5#?;4*4q71W%yu#2PLicgC_IjQO2RLwjpWXWH#Toh zVf@}NBcTFoQ9Ie-4m(f_X=@slnH{O*&(8dY3=Y>Y7jvuP3Q5c+u0fsMa@4o40rkmg zM7`K8sHJ}D=O~8c;0w diff --git a/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.po index f446bfaea..c06d24705 100644 --- a/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.po @@ -8,16 +8,16 @@ msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-06-27 18:24-0300\n" -"PO-Revision-Date: 2024-07-30 23:09+0000\n" -"Last-Translator: Will Zhai \n" -"Language-Team: Chinese (Simplified) \n" +"PO-Revision-Date: 2024-09-24 00:13+0000\n" +"Last-Translator: \"Neko.vecter\" \n" +"Language-Team: Chinese (Simplified Han script) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.7-dev\n" +"X-Generator: Weblate 5.8-dev\n" #, python-format msgid "%s will be updated to version" @@ -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 "调整剩余时间计算方法" @@ -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 "断开" From 5ae4e475b6b64884a3bea6b898e07276a90bb507 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Wed, 9 Oct 2024 17:34:33 -0300 Subject: [PATCH 030/127] feat: battery status (#1457) * Initial commit, added psutil for getting tablet/laptop battery percentage, initial code for getting the values and displaying the icon * add battery svgs for light theme * added light styled battery svgs for dark themes * update icon based on battery percentage and if device is charging * indentation fix, and forgot to add battery plugged checks for 33% and 66% battery levels * move battery polling to its own timer now that i understand how to add an additional timer, checks every 30 seconds. check for if show battery is on or off * add toggle to config for settings * show battery callback as screen.restart_ks instead of just reloading panels * move self.battery_percentage() to end of reload_icons this ensures that when a theme is changed the icon is updated instead of waiting for the timeout to update the icon again * remove left over commented out code * only call self.battery_percentage when config is true * adjust tooltip message * split creatation of elements from updating elements * change print to logging.debug, handle rouding for percentage in the f-string * remove code that was moved to `attery_init()`, only destroy icon element when updating icons/percentage text, remove redundant calls to `.pack_start` (just call it once after setting the icon). * only create battery_update timer if config setting is true * new material icons remove old icons * `self.battery_init() in `__init__` def * fix: lint * refactors * style: update icons to follow themes * refactor: remove config, make the show/hide automatic * style: bigger battery icons for z-bolt and colorized --------- Co-authored-by: MrTylerjet --- panels/base_panel.py | 63 +++++++++++++- scripts/KlipperScreen-requirements.txt | 1 + styles/colorized/images/battery-0.svg | 68 +++++++++++++++ styles/colorized/images/battery-100.svg | 75 ++++++++++++++++ styles/colorized/images/battery-25.svg | 86 +++++++++++++++++++ styles/colorized/images/battery-50.svg | 81 +++++++++++++++++ styles/colorized/images/battery-75.svg | 86 +++++++++++++++++++ styles/colorized/images/battery-charging.svg | 83 ++++++++++++++++++ styles/colorized/images/battery-unknown.svg | 84 ++++++++++++++++++ styles/material-dark/images/battery-0.svg | 1 + styles/material-dark/images/battery-100.svg | 1 + styles/material-dark/images/battery-25.svg | 1 + styles/material-dark/images/battery-50.svg | 1 + styles/material-dark/images/battery-75.svg | 1 + .../material-dark/images/battery-charging.svg | 1 + .../material-dark/images/battery-unknown.svg | 1 + styles/material-darker/images/battery-0.svg | 1 + styles/material-darker/images/battery-100.svg | 1 + styles/material-darker/images/battery-25.svg | 1 + styles/material-darker/images/battery-50.svg | 1 + styles/material-darker/images/battery-75.svg | 1 + .../images/battery-charging.svg | 1 + .../images/battery-unknown.svg | 1 + styles/material-light/images/battery-0.svg | 40 +++++++++ styles/material-light/images/battery-100.svg | 40 +++++++++ styles/material-light/images/battery-25.svg | 40 +++++++++ styles/material-light/images/battery-50.svg | 40 +++++++++ styles/material-light/images/battery-75.svg | 40 +++++++++ .../images/battery-charging.svg | 40 +++++++++ .../material-light/images/battery-unknown.svg | 40 +++++++++ styles/z-bolt/images/battery-0.svg | 68 +++++++++++++++ styles/z-bolt/images/battery-100.svg | 68 +++++++++++++++ styles/z-bolt/images/battery-25.svg | 68 +++++++++++++++ styles/z-bolt/images/battery-50.svg | 68 +++++++++++++++ styles/z-bolt/images/battery-75.svg | 68 +++++++++++++++ styles/z-bolt/images/battery-charging.svg | 72 ++++++++++++++++ styles/z-bolt/images/battery-unknown.svg | 73 ++++++++++++++++ 37 files changed, 1405 insertions(+), 1 deletion(-) create mode 100644 styles/colorized/images/battery-0.svg create mode 100644 styles/colorized/images/battery-100.svg create mode 100644 styles/colorized/images/battery-25.svg create mode 100644 styles/colorized/images/battery-50.svg create mode 100644 styles/colorized/images/battery-75.svg create mode 100644 styles/colorized/images/battery-charging.svg create mode 100644 styles/colorized/images/battery-unknown.svg create mode 100644 styles/material-dark/images/battery-0.svg create mode 100644 styles/material-dark/images/battery-100.svg create mode 100644 styles/material-dark/images/battery-25.svg create mode 100644 styles/material-dark/images/battery-50.svg create mode 100644 styles/material-dark/images/battery-75.svg create mode 100644 styles/material-dark/images/battery-charging.svg create mode 100644 styles/material-dark/images/battery-unknown.svg create mode 100644 styles/material-darker/images/battery-0.svg create mode 100644 styles/material-darker/images/battery-100.svg create mode 100644 styles/material-darker/images/battery-25.svg create mode 100644 styles/material-darker/images/battery-50.svg create mode 100644 styles/material-darker/images/battery-75.svg create mode 100644 styles/material-darker/images/battery-charging.svg create mode 100644 styles/material-darker/images/battery-unknown.svg create mode 100644 styles/material-light/images/battery-0.svg create mode 100644 styles/material-light/images/battery-100.svg create mode 100644 styles/material-light/images/battery-25.svg create mode 100644 styles/material-light/images/battery-50.svg create mode 100644 styles/material-light/images/battery-75.svg create mode 100644 styles/material-light/images/battery-charging.svg create mode 100644 styles/material-light/images/battery-unknown.svg create mode 100644 styles/z-bolt/images/battery-0.svg create mode 100644 styles/z-bolt/images/battery-100.svg create mode 100644 styles/z-bolt/images/battery-25.svg create mode 100644 styles/z-bolt/images/battery-50.svg create mode 100644 styles/z-bolt/images/battery-75.svg create mode 100644 styles/z-bolt/images/battery-charging.svg create mode 100644 styles/z-bolt/images/battery-unknown.svg diff --git a/panels/base_panel.py b/panels/base_panel.py index 1e8c17d1e..8ca0b0cbe 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- import logging - +import psutil import gi gi.require_version("Gtk", "3.0") @@ -18,6 +18,7 @@ def __init__(self, screen, title=None): self.time_min = -1 self.time_format = self._config.get_main_config().getboolean("24htime", True) self.time_update = None + self.battery_update = None self.titlebar_items = [] self.titlebar_name_type = None self.current_extruder = None @@ -85,11 +86,23 @@ def __init__(self, screen, title=None): self.control['time_box'] = Gtk.Box(halign=Gtk.Align.END) self.control['time_box'].pack_end(self.control['time'], True, True, 10) + self.battery_icons = self.load_battery_icons() + self.labels['battery'] = Gtk.Label() + self.labels['battery_icon'] = self._gtk.Image() + self.labels['battery_icon'].set_from_pixbuf(self.battery_icons['unknown']) + self.control['battery_box'] = Gtk.Box(halign=Gtk.Align.END) + self.control['battery_box'].set_no_show_all(True) + self.control['battery_box'].add(self.labels['battery']) + self.control['battery_box'].add(self.labels['battery_icon']) + for widget in self.control['battery_box']: + widget.show() + self.titlebar = Gtk.Box(spacing=5, valign=Gtk.Align.CENTER) self.titlebar.get_style_context().add_class("title_bar") self.titlebar.add(self.control['temp_box']) self.titlebar.add(self.titlelbl) self.titlebar.add(self.control['time_box']) + self.titlebar.add(self.control['battery_box']) self.set_title(title) # Main layout @@ -108,6 +121,18 @@ def __init__(self, screen, title=None): self.update_time() + def load_battery_icons(self): + img_size = self._gtk.img_scale * self.bts + return { + 'charging': self._gtk.PixbufFromIcon('battery-charging', img_size, img_size), + '100': self._gtk.PixbufFromIcon('battery-100', img_size, img_size), + '75': self._gtk.PixbufFromIcon('battery-75', img_size, img_size), + '50': self._gtk.PixbufFromIcon('battery-50', img_size, img_size), + '25': self._gtk.PixbufFromIcon('battery-25', img_size, img_size), + '0': self._gtk.PixbufFromIcon('battery-0', img_size, img_size), + 'unknown': self._gtk.PixbufFromIcon('battery-unknown', img_size, img_size), + } + def reload_icons(self): button: Gtk.Button for button in self.action_bar.get_children(): @@ -122,6 +147,9 @@ def reload_icons(self): size = self._gtk.img_scale * self.abscale * 1.4 button.set_image(self._gtk.Image(name, size, size)) + self.battery_icons = self.load_battery_icons() + self.battery_percentage() + def show_heaters(self, show=True): try: for child in self.control['temp_box'].get_children(): @@ -195,6 +223,8 @@ def get_icon(self, device, img_size): def activate(self): if self.time_update is None: self.time_update = GLib.timeout_add_seconds(1, self.update_time) + if self.battery_update is None: + self.battery_update = GLib.timeout_add_seconds(60, self.battery_percentage) def add_content(self, panel): printing = self._printer and self._printer.state in {"printing", "paused"} @@ -342,6 +372,37 @@ def update_time(self): self.time_format = confopt return True + def get_battery_icon(self, charge: float, plugged: bool): + if plugged: + return self.battery_icons['charging'] + elif charge > 75: + return self.battery_icons['100'] + elif charge > 50: + return self.battery_icons['75'] + elif charge > 25: + return self.battery_icons['50'] + elif charge > 10: + return self.battery_icons['25'] + elif charge >= 0: + return self.battery_icons['0'] + else: + return self.battery_icons['unknown'] + + def battery_percentage(self): + battery = psutil.sensors_battery() + if battery and battery.percent: + self.labels['battery_icon'].set_from_pixbuf( + self.get_battery_icon(battery.percent, battery.power_plugged) + ) + self.labels['battery'].set_text(f'{battery.percent:.0f}%') + logging.debug(f"Battery: {battery.percent}% Power plugged in: {'Yes' if battery.power_plugged else 'No'}") + self.control['battery_box'].show() + return True + else: + logging.debug("Battery information not available.") + self.control['battery_box'].hide() + return False + def set_ks_printer_cfg(self, printer): ScreenPanel.ks_printer_cfg = self._config.get_printer_config(printer) if self.ks_printer_cfg is not None: diff --git a/scripts/KlipperScreen-requirements.txt b/scripts/KlipperScreen-requirements.txt index 4246c50db..bb441cd9c 100644 --- a/scripts/KlipperScreen-requirements.txt +++ b/scripts/KlipperScreen-requirements.txt @@ -12,3 +12,4 @@ backports.zoneinfo;python_version<"3.9" PyGObject==3.48.1;python_version>="3.8" pycairo==1.26.1;python_version>="3.8" websocket-client==1.8.0;python_version>="3.8" +psutil==6.0.0;python_version>="3.8" diff --git a/styles/colorized/images/battery-0.svg b/styles/colorized/images/battery-0.svg new file mode 100644 index 000000000..67cdd630e --- /dev/null +++ b/styles/colorized/images/battery-0.svg @@ -0,0 +1,68 @@ + + + + + + image/svg+xml + + folder + + + + + + + folder + Created with Sketch. + + diff --git a/styles/colorized/images/battery-100.svg b/styles/colorized/images/battery-100.svg new file mode 100644 index 000000000..82183d9d0 --- /dev/null +++ b/styles/colorized/images/battery-100.svg @@ -0,0 +1,75 @@ + + + + + + image/svg+xml + + folder + + + + + + + folder + + Created with Sketch. + + diff --git a/styles/colorized/images/battery-25.svg b/styles/colorized/images/battery-25.svg new file mode 100644 index 000000000..50e58dc64 --- /dev/null +++ b/styles/colorized/images/battery-25.svg @@ -0,0 +1,86 @@ + + + + + + image/svg+xml + + folder + + + + + + + + + + folder + + Created with Sketch. + + diff --git a/styles/colorized/images/battery-50.svg b/styles/colorized/images/battery-50.svg new file mode 100644 index 000000000..c04f44526 --- /dev/null +++ b/styles/colorized/images/battery-50.svg @@ -0,0 +1,81 @@ + + + + + + image/svg+xml + + folder + + + + + + + + + folder + + Created with Sketch. + + diff --git a/styles/colorized/images/battery-75.svg b/styles/colorized/images/battery-75.svg new file mode 100644 index 000000000..6eb40659f --- /dev/null +++ b/styles/colorized/images/battery-75.svg @@ -0,0 +1,86 @@ + + + + + + image/svg+xml + + folder + + + + + + + + + + folder + + Created with Sketch. + + diff --git a/styles/colorized/images/battery-charging.svg b/styles/colorized/images/battery-charging.svg new file mode 100644 index 000000000..960135798 --- /dev/null +++ b/styles/colorized/images/battery-charging.svg @@ -0,0 +1,83 @@ + + + + + + image/svg+xml + + folder + + + + + + + + + + folder + Created with Sketch. + + + diff --git a/styles/colorized/images/battery-unknown.svg b/styles/colorized/images/battery-unknown.svg new file mode 100644 index 000000000..b9f22242b --- /dev/null +++ b/styles/colorized/images/battery-unknown.svg @@ -0,0 +1,84 @@ + + + + + + image/svg+xml + + folder + + + + + + + + + + folder + Created with Sketch. + + + diff --git a/styles/material-dark/images/battery-0.svg b/styles/material-dark/images/battery-0.svg new file mode 100644 index 000000000..a6f93c5f4 --- /dev/null +++ b/styles/material-dark/images/battery-0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/styles/material-dark/images/battery-100.svg b/styles/material-dark/images/battery-100.svg new file mode 100644 index 000000000..e7adbc022 --- /dev/null +++ b/styles/material-dark/images/battery-100.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/styles/material-dark/images/battery-25.svg b/styles/material-dark/images/battery-25.svg new file mode 100644 index 000000000..f1d3ebbf3 --- /dev/null +++ b/styles/material-dark/images/battery-25.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/styles/material-dark/images/battery-50.svg b/styles/material-dark/images/battery-50.svg new file mode 100644 index 000000000..51c18769b --- /dev/null +++ b/styles/material-dark/images/battery-50.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/styles/material-dark/images/battery-75.svg b/styles/material-dark/images/battery-75.svg new file mode 100644 index 000000000..3caa09891 --- /dev/null +++ b/styles/material-dark/images/battery-75.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/styles/material-dark/images/battery-charging.svg b/styles/material-dark/images/battery-charging.svg new file mode 100644 index 000000000..4115f8aa3 --- /dev/null +++ b/styles/material-dark/images/battery-charging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/styles/material-dark/images/battery-unknown.svg b/styles/material-dark/images/battery-unknown.svg new file mode 100644 index 000000000..1c517badc --- /dev/null +++ b/styles/material-dark/images/battery-unknown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/styles/material-darker/images/battery-0.svg b/styles/material-darker/images/battery-0.svg new file mode 100644 index 000000000..a6f93c5f4 --- /dev/null +++ b/styles/material-darker/images/battery-0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/styles/material-darker/images/battery-100.svg b/styles/material-darker/images/battery-100.svg new file mode 100644 index 000000000..e7adbc022 --- /dev/null +++ b/styles/material-darker/images/battery-100.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/styles/material-darker/images/battery-25.svg b/styles/material-darker/images/battery-25.svg new file mode 100644 index 000000000..f1d3ebbf3 --- /dev/null +++ b/styles/material-darker/images/battery-25.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/styles/material-darker/images/battery-50.svg b/styles/material-darker/images/battery-50.svg new file mode 100644 index 000000000..51c18769b --- /dev/null +++ b/styles/material-darker/images/battery-50.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/styles/material-darker/images/battery-75.svg b/styles/material-darker/images/battery-75.svg new file mode 100644 index 000000000..3caa09891 --- /dev/null +++ b/styles/material-darker/images/battery-75.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/styles/material-darker/images/battery-charging.svg b/styles/material-darker/images/battery-charging.svg new file mode 100644 index 000000000..4115f8aa3 --- /dev/null +++ b/styles/material-darker/images/battery-charging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/styles/material-darker/images/battery-unknown.svg b/styles/material-darker/images/battery-unknown.svg new file mode 100644 index 000000000..1c517badc --- /dev/null +++ b/styles/material-darker/images/battery-unknown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/styles/material-light/images/battery-0.svg b/styles/material-light/images/battery-0.svg new file mode 100644 index 000000000..a1083d9a1 --- /dev/null +++ b/styles/material-light/images/battery-0.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/styles/material-light/images/battery-100.svg b/styles/material-light/images/battery-100.svg new file mode 100644 index 000000000..e95b54092 --- /dev/null +++ b/styles/material-light/images/battery-100.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/styles/material-light/images/battery-25.svg b/styles/material-light/images/battery-25.svg new file mode 100644 index 000000000..95d029f74 --- /dev/null +++ b/styles/material-light/images/battery-25.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/styles/material-light/images/battery-50.svg b/styles/material-light/images/battery-50.svg new file mode 100644 index 000000000..2bf25cbbd --- /dev/null +++ b/styles/material-light/images/battery-50.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/styles/material-light/images/battery-75.svg b/styles/material-light/images/battery-75.svg new file mode 100644 index 000000000..88c8aa52e --- /dev/null +++ b/styles/material-light/images/battery-75.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/styles/material-light/images/battery-charging.svg b/styles/material-light/images/battery-charging.svg new file mode 100644 index 000000000..d296bd13d --- /dev/null +++ b/styles/material-light/images/battery-charging.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/styles/material-light/images/battery-unknown.svg b/styles/material-light/images/battery-unknown.svg new file mode 100644 index 000000000..47f971292 --- /dev/null +++ b/styles/material-light/images/battery-unknown.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/styles/z-bolt/images/battery-0.svg b/styles/z-bolt/images/battery-0.svg new file mode 100644 index 000000000..3d584919b --- /dev/null +++ b/styles/z-bolt/images/battery-0.svg @@ -0,0 +1,68 @@ + + + + + + image/svg+xml + + folder + + + + + + + folder + Created with Sketch. + + diff --git a/styles/z-bolt/images/battery-100.svg b/styles/z-bolt/images/battery-100.svg new file mode 100644 index 000000000..0bb21e09f --- /dev/null +++ b/styles/z-bolt/images/battery-100.svg @@ -0,0 +1,68 @@ + + + + + + image/svg+xml + + folder + + + + + + + folder + Created with Sketch. + + diff --git a/styles/z-bolt/images/battery-25.svg b/styles/z-bolt/images/battery-25.svg new file mode 100644 index 000000000..aa8a9721b --- /dev/null +++ b/styles/z-bolt/images/battery-25.svg @@ -0,0 +1,68 @@ + + + + + + image/svg+xml + + folder + + + + + + + folder + Created with Sketch. + + diff --git a/styles/z-bolt/images/battery-50.svg b/styles/z-bolt/images/battery-50.svg new file mode 100644 index 000000000..ce2e1cfaf --- /dev/null +++ b/styles/z-bolt/images/battery-50.svg @@ -0,0 +1,68 @@ + + + + + + image/svg+xml + + folder + + + + + + + folder + Created with Sketch. + + diff --git a/styles/z-bolt/images/battery-75.svg b/styles/z-bolt/images/battery-75.svg new file mode 100644 index 000000000..0941d7136 --- /dev/null +++ b/styles/z-bolt/images/battery-75.svg @@ -0,0 +1,68 @@ + + + + + + image/svg+xml + + folder + + + + + + + folder + Created with Sketch. + + diff --git a/styles/z-bolt/images/battery-charging.svg b/styles/z-bolt/images/battery-charging.svg new file mode 100644 index 000000000..518e89b00 --- /dev/null +++ b/styles/z-bolt/images/battery-charging.svg @@ -0,0 +1,72 @@ + + + + + + image/svg+xml + + folder + + + + + + + folder + Created with Sketch. + + + diff --git a/styles/z-bolt/images/battery-unknown.svg b/styles/z-bolt/images/battery-unknown.svg new file mode 100644 index 000000000..0c6180868 --- /dev/null +++ b/styles/z-bolt/images/battery-unknown.svg @@ -0,0 +1,73 @@ + + + + + + image/svg+xml + + folder + + + + + + + folder + Created with Sketch. + + + From 0c9884bc859051283a34bf0dc8beac8f0f4669b5 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Fri, 4 Oct 2024 11:19:36 -0300 Subject: [PATCH 031/127] fix: misplaced logging error in 71eef9e --- panels/base_panel.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/panels/base_panel.py b/panels/base_panel.py index 8ca0b0cbe..a2259632c 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -140,10 +140,10 @@ def reload_icons(self): name = button.get_name() pixbuf = img.get_pixbuf() if pixbuf is not None: - logging.error(f"Couldn't get pixbuf for {name}," - f"a custom theme may have caused this") size = pixbuf.get_width() else: + logging.error(f"Couldn't get pixbuf for {name}," + f"a custom theme may have caused this") size = self._gtk.img_scale * self.abscale * 1.4 button.set_image(self._gtk.Image(name, size, size)) From 1872b40d9f038f394e528c1d7e2f948e278c673a Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Fri, 4 Oct 2024 11:19:17 -0300 Subject: [PATCH 032/127] fix(base_panel): remove printer name from printer_select and fix initial not connected error --- panels/base_panel.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/panels/base_panel.py b/panels/base_panel.py index a2259632c..23f959fc3 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -151,13 +151,14 @@ def reload_icons(self): self.battery_percentage() def show_heaters(self, show=True): + for child in self.control['temp_box'].get_children(): + self.control['temp_box'].remove(child) + if self._printer is None or not show: + return try: - for child in self.control['temp_box'].get_children(): - self.control['temp_box'].remove(child) devices = self._printer.get_temp_devices() - if not show or not devices: + if not devices: return - img_size = self._gtk.img_scale * self.bts for device in devices: self.labels[device] = Gtk.Label(ellipsize=Pango.EllipsizeMode.START) @@ -229,10 +230,11 @@ def activate(self): def add_content(self, panel): printing = self._printer and self._printer.state in {"printing", "paused"} connected = self._printer and self._printer.state not in {'disconnected', 'startup', 'shutdown', 'error'} + printer_select = 'printer_select' not in self._screen._cur_panels self.control['estop'].set_visible(printing) self.control['shutdown'].set_visible(not printing) - self.show_shortcut(connected) - self.show_heaters(connected) + self.show_shortcut(connected and printer_select) + self.show_heaters(connected and printer_select) self.show_printer_select(len(self._config.get_printers()) > 1) for control in ('back', 'home'): self.set_control_sensitive(len(self._screen._cur_panels) > 1, control=control) @@ -293,10 +295,12 @@ def process_update(self, action, data): for dialog in self._screen.dialogs: self._gtk.remove_dialog(dialog) return - if action != "notify_status_update" or self._screen.printer is None: return - for device in self._printer.get_temp_devices(): + devices = self._printer.get_temp_devices() + if not devices: + return + for device in devices: temp = self._printer.get_stat(device, "temperature") if temp and device in self.labels: name = "" @@ -343,7 +347,10 @@ def show_printer_select(self, show=True): def set_title(self, title): self.titlebar.get_style_context().remove_class("message_popup_error") - if self._screen.connecting_to_printer != "Printer": + if ( + self._screen.connecting_to_printer != "Printer" + and 'printer_select' not in self._screen._cur_panels + ): printer = self._screen.connecting_to_printer else: printer = "" From ab308e23f743167b53e85090fa0015f33ff27eab Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Tue, 8 Oct 2024 12:20:58 -0300 Subject: [PATCH 033/127] feat(bed_mesh): do z_tilt or quad_level if not done before --- panels/bed_mesh.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/panels/bed_mesh.py b/panels/bed_mesh.py index a153c5015..99c55cd5d 100644 --- a/panels/bed_mesh.py +++ b/panels/bed_mesh.py @@ -241,6 +241,16 @@ def calibrate_mesh(self, widget): self._screen.show_popup_message(_("Calibrating"), level=1) if self._printer.get_stat("toolhead", "homed_axes") != "xyz": self._screen._ws.klippy.gcode_script("G28") + if ( + "Z_TILT_ADJUST" in self._printer.available_commands + and not bool(self._printer.get_stat("z_tilt", "applied")) + ): + self._screen._ws.klippy.gcode_script("Z_TILT_ADJUST") + if ( + "QUAD_GANTRY_LEVEL" in self._printer.available_commands + and not bool(self._printer.get_stat("quad_gantry_level", "applied")) + ): + self._screen._ws.klippy.gcode_script("QUAD_GANTRY_LEVEL") self._screen._send_action(widget, "printer.gcode.script", {"script": "BED_MESH_CALIBRATE"}) def send_clear_mesh(self, widget): From b3b097fbe396e93132eda8bd656b91f6cae58d75 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Tue, 8 Oct 2024 13:00:12 -0300 Subject: [PATCH 034/127] fix(job_status): restart sometimes not responding --- panels/job_status.py | 1 + 1 file changed, 1 insertion(+) diff --git a/panels/job_status.py b/panels/job_status.py index a867e40ef..ab78d05f5 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -470,6 +470,7 @@ def new_print(self): logging.info("reseting progress") self._printer.data["virtual_sdcard"]["progress"] = 0 self.update_progress(0.0) + self.set_state("printing") def process_update(self, action, data): if action == "notify_gcode_response": From e1459337823a481e3f255ecccb55352f9abf53e3 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Wed, 9 Oct 2024 18:12:41 -0300 Subject: [PATCH 035/127] chore(locales): update base --- ks_includes/locales/KlipperScreen.pot | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/ks_includes/locales/KlipperScreen.pot b/ks_includes/locales/KlipperScreen.pot index 7f0afab5d..81b1b540d 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-06-27 18:24-0300\n" +"POT-Creation-Date: 2024-10-09 18:08-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -342,6 +342,9 @@ msgstr "" msgid "Font Size" msgstr "" +msgid "For mouse control or to verify touchscreen accuracy" +msgstr "" + msgid "Forget" msgstr "" @@ -366,9 +369,6 @@ msgstr "" msgid "Hide sensors in Temp." msgstr "" -msgid "Hide temp." -msgstr "" - msgid "Home" msgstr "" @@ -420,6 +420,9 @@ msgstr "" msgid "Invalid password" msgstr "" +msgid "Invalid temperature" +msgstr "" + msgid "Inversely affects the icon size" msgstr "" @@ -626,9 +629,6 @@ msgstr "" msgid "Outdated by %d" msgstr "" -msgid "PSK for" -msgstr "" - msgid "Package will be updated" msgid_plural "Packages will be updated" msgstr[0] "" @@ -637,6 +637,9 @@ msgstr[1] "" msgid "Part Fan" msgstr "" +msgid "Password" +msgstr "" + msgid "Password saved" msgstr "" @@ -803,6 +806,9 @@ msgstr "" msgid "Show Scrollbars Buttons" msgstr "" +msgid "Show cursor" +msgstr "" + msgid "Show only devices that are able to be set" msgstr "" @@ -872,6 +878,9 @@ msgstr "" msgid "Temperature" msgstr "" +msgid "Temperature too low to extrude" +msgstr "" + msgid "The system doesn't meet the minimum requirement" msgstr "" @@ -917,6 +926,9 @@ msgstr "" msgid "Useful for un-responsive touchscreens" msgstr "" +msgid "User" +msgstr "" + msgid "WebRTC is not supported by the backend trying Stream" msgstr "" From 704fbf42dafaf7e372b16cfc73fb2f5bd2913ee4 Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Sun, 13 Oct 2024 18:40:55 +0200 Subject: [PATCH 036/127] chore(locales): Translations update from Hosted Weblate (#1476) * Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Czech) Currently translated at 100.0% (322 of 322 strings) Co-authored-by: Miloslav Kos Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/cs/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Spanish) Currently translated at 100.0% (322 of 322 strings) Co-authored-by: Alfredo Monclus Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/es/ Translation: KlipperScreen/KlipperScreen * 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 (Dutch) Currently translated at 93.1% (300 of 322 strings) Co-authored-by: Thijs Triemstra Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/nl/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Turkish) Currently translated at 100.0% (322 of 322 strings) Co-authored-by: Selim Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/tr/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Polish) Currently translated at 100.0% (322 of 322 strings) Co-authored-by: Daviteusz Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/pl/ Translation: KlipperScreen/KlipperScreen --------- Co-authored-by: Miloslav Kos Co-authored-by: Alfredo Monclus Co-authored-by: gallegonovato Co-authored-by: Thijs Triemstra Co-authored-by: Selim Co-authored-by: Daviteusz --- .../locales/ar/LC_MESSAGES/KlipperScreen.po | 36 +++++++-- .../locales/cs/LC_MESSAGES/KlipperScreen.mo | Bin 18451 -> 18758 bytes .../locales/cs/LC_MESSAGES/KlipperScreen.po | 36 ++++++--- .../locales/da/LC_MESSAGES/KlipperScreen.po | 36 +++++++-- .../locales/de/LC_MESSAGES/KlipperScreen.po | 36 +++++++-- .../de_formal/LC_MESSAGES/KlipperScreen.po | 36 +++++++-- .../locales/es/LC_MESSAGES/KlipperScreen.mo | Bin 18676 -> 18993 bytes .../locales/es/LC_MESSAGES/KlipperScreen.po | 38 ++++++--- .../locales/et/LC_MESSAGES/KlipperScreen.po | 36 +++++++-- .../locales/fr/LC_MESSAGES/KlipperScreen.po | 36 +++++++-- .../locales/he/LC_MESSAGES/KlipperScreen.po | 36 +++++++-- .../locales/hu/LC_MESSAGES/KlipperScreen.po | 36 +++++++-- .../locales/it/LC_MESSAGES/KlipperScreen.po | 36 +++++++-- .../locales/jp/LC_MESSAGES/KlipperScreen.po | 33 ++++++-- .../locales/ko/LC_MESSAGES/KlipperScreen.po | 42 +++++++--- .../locales/lt/LC_MESSAGES/KlipperScreen.po | 40 ++++++--- .../locales/nl/LC_MESSAGES/KlipperScreen.mo | Bin 15589 -> 16805 bytes .../locales/nl/LC_MESSAGES/KlipperScreen.po | 76 +++++++++++------- .../locales/pl/LC_MESSAGES/KlipperScreen.mo | Bin 19147 -> 19470 bytes .../locales/pl/LC_MESSAGES/KlipperScreen.po | 38 ++++++--- .../locales/pt/LC_MESSAGES/KlipperScreen.po | 36 +++++++-- .../pt_BR/LC_MESSAGES/KlipperScreen.po | 36 +++++++-- .../locales/ru/LC_MESSAGES/KlipperScreen.po | 36 +++++++-- .../locales/sl/LC_MESSAGES/KlipperScreen.po | 36 +++++++-- .../locales/sv/LC_MESSAGES/KlipperScreen.po | 36 +++++++-- .../locales/tr/LC_MESSAGES/KlipperScreen.mo | Bin 18896 -> 19199 bytes .../locales/tr/LC_MESSAGES/KlipperScreen.po | 36 ++++++--- .../locales/uk/LC_MESSAGES/KlipperScreen.po | 40 +++++++-- .../locales/vi/LC_MESSAGES/KlipperScreen.po | 36 +++++++-- .../zh_CN/LC_MESSAGES/KlipperScreen.po | 36 +++++++-- .../zh_TW/LC_MESSAGES/KlipperScreen.po | 36 +++++++-- 31 files changed, 771 insertions(+), 220 deletions(-) diff --git a/ks_includes/locales/ar/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/ar/LC_MESSAGES/KlipperScreen.po index fdc8ebf6f..a95e6ae43 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-06-27 18:24-0300\n" +"POT-Creation-Date: 2024-10-09 18:08-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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 diff --git a/ks_includes/locales/cs/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/cs/LC_MESSAGES/KlipperScreen.po index b78a04e68..8a973fe58 100644 --- a/ks_includes/locales/cs/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/cs/LC_MESSAGES/KlipperScreen.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Czech\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-27 18:24-0300\n" -"PO-Revision-Date: 2024-06-29 06:09+0000\n" +"POT-Creation-Date: 2024-10-09 18:08-0300\n" +"PO-Revision-Date: 2024-10-10 07:43+0000\n" "Last-Translator: Miloslav Kos \n" "Language-Team: Czech \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" -"X-Generator: Weblate 5.7-dev\n" +"X-Generator: Weblate 5.8-dev\n" #, python-format msgid "%s will be updated to version" @@ -343,6 +343,9 @@ msgstr "Rychlost toku:" msgid "Font Size" msgstr "Velikost fontu" +msgid "For mouse control or to verify touchscreen accuracy" +msgstr "ro ovládání myší nebo ověření přesnosti dotykového displeje" + msgid "Forget" msgstr "Zapomenout" @@ -367,9 +370,6 @@ msgstr "Skrýt" msgid "Hide sensors in Temp." msgstr "Skrýt senzory v Temp." -msgid "Hide temp." -msgstr "Skrýt teplotu" - msgid "Home" msgstr "Domů" @@ -421,6 +421,9 @@ msgstr "Špatně" msgid "Invalid password" msgstr "Špatné heslo" +msgid "Invalid temperature" +msgstr "Chybná teplota" + msgid "Inversely affects the icon size" msgstr "Inverzně ovlivňuje velikost ikony" @@ -628,9 +631,6 @@ msgstr "Pouze pro panel pohybů" msgid "Outdated by %d" msgstr "Zastaralý %d" -msgid "PSK for" -msgstr "PSK pro" - msgid "Package will be updated" msgid_plural "Packages will be updated" msgstr[0] "Balíček bude aktualizován" @@ -640,6 +640,9 @@ msgstr[2] "Balíčky budou aktualizovány" msgid "Part Fan" msgstr "Částečný ofuk" +msgid "Password" +msgstr "Heslo" + msgid "Password saved" msgstr "Heslo uloženo" @@ -806,6 +809,9 @@ msgstr "Ukaž odběr topení" msgid "Show Scrollbars Buttons" msgstr "Ukaž rolovací tlačítka" +msgid "Show cursor" +msgstr "Zobrazit kurzor" + msgid "Show only devices that are able to be set" msgstr "Zobrazit pouze zařízení, která lze nastavit" @@ -875,6 +881,9 @@ msgstr "Teplota (°C)" msgid "Temperature" msgstr "Teplota" +msgid "Temperature too low to extrude" +msgstr "Příliš nízká teplota pro extruzi" + msgid "The system doesn't meet the minimum requirement" msgstr "Systém nesplňuje minimální požadavky" @@ -920,6 +929,9 @@ msgstr "Aktualizuji" msgid "Useful for un-responsive touchscreens" msgstr "Užitečné pro nereagující dotykové obrazovky" +msgid "User" +msgstr "Uživatel" + msgid "WebRTC is not supported by the backend trying Stream" msgstr "WebRTC není podporováno backendem, který se pokouší spustit Stream" @@ -1001,6 +1013,12 @@ msgstr[0] "sekunda" msgstr[1] "sekundy" msgstr[2] "sekundy" +#~ msgid "Hide temp." +#~ msgstr "Skrýt teplotu" + +#~ msgid "PSK for" +#~ msgstr "PSK pro" + #~ msgid "Are you sure you want to stop the calibration?" #~ msgstr "Opravdu chcete kalibraci zastavit?" diff --git a/ks_includes/locales/da/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/da/LC_MESSAGES/KlipperScreen.po index 588ab8c78..6847ef8d1 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-06-27 18:24-0300\n" +"POT-Creation-Date: 2024-10-09 18:08-0300\n" "PO-Revision-Date: 2024-07-03 13:59+0000\n" "Last-Translator: srbjessen \n" "Language-Team: Danish \n" "Language-Team: German \n" "Language-Team: German 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 J?;W@@;J^7x7()O6 delta 6913 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 diff --git a/ks_includes/locales/es/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/es/LC_MESSAGES/KlipperScreen.po index 491482a59..2821dfa6c 100644 --- a/ks_includes/locales/es/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/es/LC_MESSAGES/KlipperScreen.po @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-27 18:24-0300\n" -"PO-Revision-Date: 2024-07-12 00:09+0000\n" -"Last-Translator: Radiotbo \n" +"POT-Creation-Date: 2024-10-09 18:08-0300\n" +"PO-Revision-Date: 2024-10-10 13:25+0000\n" +"Last-Translator: gallegonovato \n" "Language-Team: Spanish \n" "Language: es\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.7-dev\n" +"X-Generator: Weblate 5.8-dev\n" #, python-format msgid "%s will be updated to version" @@ -343,6 +343,9 @@ msgstr "Tasa de Flujo:" msgid "Font Size" msgstr "Tamaño del texto" +msgid "For mouse control or to verify touchscreen accuracy" +msgstr "Para controlar el ratón o verificar la precisión de la pantalla táctil" + msgid "Forget" msgstr "Olvidar" @@ -367,9 +370,6 @@ msgstr "Ocultar" msgid "Hide sensors in Temp." msgstr "Ocultar sensores en Temp." -msgid "Hide temp." -msgstr "Ocultar temp." - msgid "Home" msgstr "Inicio" @@ -421,6 +421,9 @@ msgstr "Invalido" msgid "Invalid password" msgstr "Contraseña invalida" +msgid "Invalid temperature" +msgstr "Temperatura incorrecta" + msgid "Inversely affects the icon size" msgstr "Afecta inversamente al tamaño del icono" @@ -630,9 +633,6 @@ msgstr "Solo para el panel de movimiento" msgid "Outdated by %d" msgstr "Desactualizado por %d" -msgid "PSK for" -msgstr "PSK para" - msgid "Package will be updated" msgid_plural "Packages will be updated" msgstr[0] "Paquete será actualizado" @@ -641,6 +641,9 @@ msgstr[1] "Paquetes serán actualizados" msgid "Part Fan" msgstr "Ventilador de parte" +msgid "Password" +msgstr "Contraseña" + msgid "Password saved" msgstr "Contraseña guardada" @@ -807,6 +810,9 @@ msgstr "Mostrar potencia del calentador" msgid "Show Scrollbars Buttons" msgstr "Mostrar botones de desplazamiento" +msgid "Show cursor" +msgstr "Mostrar cursor" + msgid "Show only devices that are able to be set" msgstr "Mostrar solo los dispositivos que se pueden configurar" @@ -877,6 +883,9 @@ msgstr "Temp (°C)" msgid "Temperature" msgstr "Temperatura" +msgid "Temperature too low to extrude" +msgstr "Temperatura muy baja para extruir" + msgid "The system doesn't meet the minimum requirement" msgstr "El sistema no cumple con los requisitos mínimos" @@ -924,6 +933,9 @@ msgstr "Actualizando" msgid "Useful for un-responsive touchscreens" msgstr "Útil para pantallas táctiles poco responsivas" +msgid "User" +msgstr "Usuario" + msgid "WebRTC is not supported by the backend trying Stream" msgstr "WebRTC no es soportado por el backend intentando con Stream" @@ -1000,6 +1012,12 @@ msgid_plural "seconds" msgstr[0] "segundo" msgstr[1] "segundos" +#~ msgid "Hide temp." +#~ msgstr "Ocultar temp." + +#~ msgid "PSK for" +#~ msgstr "PSK para" + #~ msgid "Are you sure you want to stop the calibration?" #~ msgstr "¿Está seguro de que desea detener la calibración?" diff --git a/ks_includes/locales/et/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/et/LC_MESSAGES/KlipperScreen.po index 9e26bed19..258b62cf5 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-06-27 18:24-0300\n" +"POT-Creation-Date: 2024-10-09 18:08-0300\n" "PO-Revision-Date: 2024-07-26 19:09+0000\n" "Last-Translator: Jegert Uusküla \n" "Language-Team: Estonian \n" "Language-Team: French \n" "Language-Team: Hebrew \n" "Language-Team: Hungarian \n" "Language-Team: Italian \n" "Language-Team: Japanese \n" +"Last-Translator: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github." +"com>\n" "Language-Team: Korean \n" "Language: ko\n" @@ -338,6 +339,9 @@ msgstr "유량 비율:" msgid "Font Size" msgstr "글꼴 크기" +msgid "For mouse control or to verify touchscreen accuracy" +msgstr "" + msgid "Forget" msgstr "" @@ -362,9 +366,6 @@ msgstr "가리기" msgid "Hide sensors in Temp." msgstr "온도 섹션에서 센서 항목 숨김." -msgid "Hide temp." -msgstr "온도 숨김." - msgid "Home" msgstr "원점 이동" @@ -416,6 +417,11 @@ msgstr "존재하지 않음" msgid "Invalid password" msgstr "잘못된 패스워드" +#, fuzzy +#| msgid "Temperature" +msgid "Invalid temperature" +msgstr "온도" + msgid "Inversely affects the icon size" msgstr "" @@ -623,9 +629,6 @@ msgstr "" msgid "Outdated by %d" msgstr "%d 보다 오래됨" -msgid "PSK for" -msgstr "PSK 키 값(비밀번호)" - msgid "Package will be updated" msgid_plural "Packages will be updated" msgstr[0] "패키지가 업데이트 됩니다" @@ -633,6 +636,11 @@ msgstr[0] "패키지가 업데이트 됩니다" msgid "Part Fan" msgstr "파트 쿨링 팬" +#, fuzzy +#| msgid "Password saved" +msgid "Password" +msgstr "비밀번호 저장됨" + msgid "Password saved" msgstr "비밀번호 저장됨" @@ -799,6 +807,9 @@ msgstr "히터 전원 보기" msgid "Show Scrollbars Buttons" msgstr "스크롤바 버튼 보기" +msgid "Show cursor" +msgstr "" + msgid "Show only devices that are able to be set" msgstr "" @@ -868,6 +879,9 @@ msgstr "온도 (°C)" msgid "Temperature" msgstr "온도" +msgid "Temperature too low to extrude" +msgstr "" + msgid "The system doesn't meet the minimum requirement" msgstr "시스템이 최소 요구 조건을 충족하지 않습니다" @@ -913,6 +927,9 @@ msgstr "업데이트 중" msgid "Useful for un-responsive touchscreens" msgstr "응답 없는 터치스크린에 유용함" +msgid "User" +msgstr "" + msgid "WebRTC is not supported by the backend trying Stream" msgstr "WebRTC는 백엔드 trying Stream에서 지원되지 않습니다" @@ -984,6 +1001,12 @@ msgid "second" msgid_plural "seconds" msgstr[0] "초" +#~ msgid "Hide temp." +#~ msgstr "온도 숨김." + +#~ msgid "PSK for" +#~ msgstr "PSK 키 값(비밀번호)" + #~ msgid "Mesh calibrate" #~ msgstr "메쉬 보정" @@ -1023,8 +1046,7 @@ msgstr[0] "초" #~ msgid "" #~ "Not supported for auto-detection, it needs to be configured in " #~ "klipperscreen.conf" -#~ msgstr "" -#~ "자동 감지는 지원되지 않으므로 klipperscreen.conf로 구성해야 합니다" +#~ msgstr "자동 감지는 지원되지 않으므로 klipperscreen.conf로 구성해야 합니다" #~ msgid "Unknown screw position" #~ msgstr "알 수 없는 스크류 위치" diff --git a/ks_includes/locales/lt/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/lt/LC_MESSAGES/KlipperScreen.po index c985d456b..359c53191 100644 --- a/ks_includes/locales/lt/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/lt/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-06-27 18:24-0300\n" +"POT-Creation-Date: 2024-10-09 18:08-0300\n" "PO-Revision-Date: 2024-07-16 13:09+0000\n" "Last-Translator: vjurka \n" "Language-Team: Lithuanian =2 && (" -"n%100<10 || n%100>=20) ? 1 : 2);\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" #, python-format @@ -344,6 +344,9 @@ msgstr "Sąnaudos:" msgid "Font Size" msgstr "Šrifto dydis" +msgid "For mouse control or to verify touchscreen accuracy" +msgstr "" + msgid "Forget" msgstr "Užmiršti" @@ -368,9 +371,6 @@ msgstr "Paslėpti" msgid "Hide sensors in Temp." msgstr "Slėpti temperatūros daviklius." -msgid "Hide temp." -msgstr "Slėpti temperatūrą." - msgid "Home" msgstr "Parkavimas" @@ -422,6 +422,11 @@ msgstr "Neteisinga" msgid "Invalid password" msgstr "Blogas slaptažodis" +#, fuzzy +#| msgid "Temperature" +msgid "Invalid temperature" +msgstr "Temperatūra" + msgid "Inversely affects the icon size" msgstr "Atvirkščiai veikia piktogramos dydį" @@ -631,9 +636,6 @@ msgstr "Tik perkėlimo skydeliui" msgid "Outdated by %d" msgstr "Pasenę %d" -msgid "PSK for" -msgstr "PSK" - msgid "Package will be updated" msgid_plural "Packages will be updated" msgstr[0] "Paketas bus atnaujintas" @@ -643,6 +645,11 @@ msgstr[2] "Paketai bus atnaujinti" msgid "Part Fan" msgstr "Dirbinio ventiliatorius" +#, fuzzy +#| msgid "Password saved" +msgid "Password" +msgstr "Slaptažodis išsaugotas" + msgid "Password saved" msgstr "Slaptažodis išsaugotas" @@ -809,6 +816,9 @@ msgstr "Rodyti šildytuvo galią" msgid "Show Scrollbars Buttons" msgstr "Rodyti stumdymo juostą" +msgid "Show cursor" +msgstr "" + msgid "Show only devices that are able to be set" msgstr "Rodyti tik tuos įrenginius, kuriuos galima nustatyti" @@ -879,6 +889,9 @@ msgstr "Temperatūra (°С)" msgid "Temperature" msgstr "Temperatūra" +msgid "Temperature too low to extrude" +msgstr "" + msgid "The system doesn't meet the minimum requirement" msgstr "Sistema neatitinka minimalių reikalavimų" @@ -924,6 +937,9 @@ msgstr "Atnaujinama" msgid "Useful for un-responsive touchscreens" msgstr "Naudinga nereaguojantiems jutikliniams ekranams" +msgid "User" +msgstr "" + msgid "WebRTC is not supported by the backend trying Stream" msgstr "WebRTC nepalaikoma, bandoma Stream" @@ -1005,6 +1021,12 @@ msgstr[0] "sekundė" msgstr[1] "sekundės" msgstr[2] "sekundžių" +#~ msgid "Hide temp." +#~ msgstr "Slėpti temperatūrą." + +#~ msgid "PSK for" +#~ msgstr "PSK" + #~ msgid "Are you sure you want to stop the calibration?" #~ msgstr "Ar tikrai norite sustabdyti kalibraciją?" diff --git a/ks_includes/locales/nl/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/nl/LC_MESSAGES/KlipperScreen.mo index c97a2c75eb92a8fca9b06ae95e30614a9cf05a04..3fc75e9ac0f94159bcfa7049984b797cdbcf462b 100644 GIT binary patch delta 7485 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 Av;Y7A delta 6322 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 F{{YlSpJf05 diff --git a/ks_includes/locales/nl/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/nl/LC_MESSAGES/KlipperScreen.po index 2df158146..27379ecbb 100644 --- a/ks_includes/locales/nl/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/nl/LC_MESSAGES/KlipperScreen.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-27 18:24-0300\n" -"PO-Revision-Date: 2024-07-23 00:09+0000\n" +"POT-Creation-Date: 2024-10-09 18:08-0300\n" +"PO-Revision-Date: 2024-10-10 13:25+0000\n" "Last-Translator: Thijs Triemstra \n" "Language-Team: Dutch \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.7-dev\n" +"X-Generator: Weblate 5.8-dev\n" #, python-format msgid "%s will be updated to version" @@ -343,6 +343,9 @@ msgstr "Flowrate:" msgid "Font Size" msgstr "Lettertype Grootte" +msgid "For mouse control or to verify touchscreen accuracy" +msgstr "" + msgid "Forget" msgstr "Vergeet" @@ -367,9 +370,6 @@ msgstr "Verberg" msgid "Hide sensors in Temp." msgstr "Verberg sensoren in Temp." -msgid "Hide temp." -msgstr "Verberg temp." - msgid "Home" msgstr "Home" @@ -410,7 +410,7 @@ msgid "Input Shaper" msgstr "Input Shaper" msgid "Insufficient privileges" -msgstr "" +msgstr "Onvoldoende rechten" msgid "Interface" msgstr "Interface" @@ -421,6 +421,9 @@ msgstr "Ongeldig" msgid "Invalid password" msgstr "Ongeldig wachtwoord" +msgid "Invalid temperature" +msgstr "Ongeldige temperatuur" + msgid "Inversely affects the icon size" msgstr "" @@ -437,7 +440,7 @@ msgid "It may take more than 5 minutes depending on the heater power." msgstr "Het kan meer dan 5 minuten duren op basis van de heater power." msgid "It's possible that the configuration is not correct" -msgstr "" +msgstr "Het is mogelijk dat de configuratie incorrect is" msgid "Job Status" msgstr "" @@ -479,7 +482,7 @@ msgid "Last Used" msgstr "Laatst Gebruikt" msgid "Layer Height" -msgstr "" +msgstr "Laag Hoogte" msgid "Layer:" msgstr "Laag:" @@ -527,7 +530,7 @@ msgid "Max Velocity" msgstr "Max Velocity" msgid "Max:" -msgstr "" +msgstr "Max:" msgid "Maximum" msgstr "Maximum" @@ -545,7 +548,7 @@ msgid "Medium" msgstr "Medium" msgid "Memory" -msgstr "" +msgstr "Geheugen" msgid "Menu" msgstr "Menu" @@ -554,7 +557,7 @@ msgid "Minimum Cruise Ratio" msgstr "" msgid "Minimum:" -msgstr "" +msgstr "Minimum:" msgid "Modified" msgstr "Aangepast" @@ -578,13 +581,13 @@ msgid "Network" msgstr "Netwerk" msgid "Network connected" -msgstr "" +msgstr "Netwerk verbonden" msgid "Network disconnected" -msgstr "" +msgstr "Network verbroken" msgid "Network not found" -msgstr "" +msgstr "Netwerk niet gevonden" msgid "Never" msgstr "Nooit" @@ -596,7 +599,7 @@ msgid "No elegible macros:" msgstr "Macros komen niet in aanmerking:" msgid "No info available" -msgstr "" +msgstr "Geen info beschikbaar" msgid "No mesh has been loaded" msgstr "Geen mesh geladen" @@ -605,7 +608,7 @@ msgid "No wireless interface has been found" msgstr "Geen draadloze netwerk interface gevonden" msgid "Not all screens support this" -msgstr "" +msgstr "Niet alle schermen ondersteunen dit" msgid "Not working or not configured" msgstr "Niet werkend of niet geconfigureerd" @@ -629,9 +632,6 @@ msgstr "" msgid "Outdated by %d" msgstr "Verouderd sinds %d" -msgid "PSK for" -msgstr "PSK voor" - msgid "Package will be updated" msgid_plural "Packages will be updated" msgstr[0] "Pakket word ge-update" @@ -640,6 +640,9 @@ msgstr[1] "Pakketten worden ge-update" msgid "Part Fan" msgstr "Part Ventilator" +msgid "Password" +msgstr "Wachtwoord" + msgid "Password saved" msgstr "Wachtwoord opgeslagen" @@ -659,7 +662,7 @@ msgid "Please recompile and flash the micro-controller." msgstr "Hercompileer en flash de micro-controller aub." msgid "Please wait" -msgstr "" +msgstr "Even geduld aub" msgid "Power" msgstr "Stroom" @@ -725,7 +728,7 @@ msgid "Refresh" msgstr "Refresh" msgid "Remove network" -msgstr "" +msgstr "Verwijder netwerk" msgid "Rename/Move:" msgstr "Hernoem/beweeg:" @@ -755,7 +758,7 @@ msgid "Retrying" msgstr "Probeert opnieuw" msgid "Rotation invalid" -msgstr "" +msgstr "Rotatie ongeldig" msgid "Save" msgstr "Opslaan" @@ -806,6 +809,9 @@ msgstr "Toon Heater Stroom" msgid "Show Scrollbars Buttons" msgstr "Toon Scrollbars Knoppen" +msgid "Show cursor" +msgstr "Toon cursor" + msgid "Show only devices that are able to be set" msgstr "" @@ -867,7 +873,7 @@ msgid "System Shutdown" msgstr "Systeem Afsluiten" msgid "System:" -msgstr "" +msgstr "Systeem:" msgid "Temp (°C)" msgstr "Temp (°C)" @@ -875,6 +881,9 @@ msgstr "Temp (°C)" msgid "Temperature" msgstr "Temperatuur" +msgid "Temperature too low to extrude" +msgstr "Temperatuur te laag voor extrude" + msgid "The system doesn't meet the minimum requirement" msgstr "" @@ -897,7 +906,7 @@ msgid "Unknown Heater" msgstr "Onbekende Heater" msgid "Unknown security type" -msgstr "" +msgstr "Onbekend beveiliging type" msgid "Unload" msgstr "Uitladen" @@ -920,6 +929,9 @@ msgstr "Bezig met updaten" msgid "Useful for un-responsive touchscreens" msgstr "" +msgid "User" +msgstr "Gebruiker" + msgid "WebRTC is not supported by the backend trying Stream" msgstr "WebRTC is niet ondersteund door de backend" @@ -954,8 +966,8 @@ msgstr[1] "commits" msgid "day" msgid_plural "days" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "dag" +msgstr[1] "dagen" msgid "g" msgstr "" @@ -993,8 +1005,14 @@ msgstr "" msgid "second" msgid_plural "seconds" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "seconde" +msgstr[1] "seconden" + +#~ msgid "Hide temp." +#~ msgstr "Verberg temp." + +#~ msgid "PSK for" +#~ msgstr "PSK voor" #~ msgid "Mesh calibrate" #~ msgstr "Mesh kalibreren" diff --git a/ks_includes/locales/pl/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/pl/LC_MESSAGES/KlipperScreen.mo index 9a501f3a4f27e61d2fb89780fbb331732ba61785..ae6a176b868c37417d89d2436dc4dbaeca75ceeb 100644 GIT binary patch delta 7206 zcmY+}3w+P@9>?+DfAjs3Olk8${yqLQTk?s9Z8 zYC4X~T)Igm6?-J9BNWPU2_0Dxxtz}Hz2Dd4bbb$?J-^@Y@Avy&KHuN(xAmxcv17q9 zhwpfF&|-_Dufwtuv2%oFZKOOjR;`v5*2J=!VmO9l3f93)Y=t=(gM}E3)37ei!VsK~ zk?6-jT#dSJ4K}wdpH)dg1MI~xJd5q|61GJrvr5Ndn2P15{u*Xb-;bKeO$@>$I;)2% z*a*8|0^Wt1$YZF5Ou;b5x1OM&8=o^L79dHmmZ5G~gIdW(WDIM&segsa#8Fg-XHoan zAal2FA}h2SHM19zg`w14*Z?PCGUHo53Q9?ZaXs?S+QbiKECNMh)~k*2f@5 zQHKpt1EiqtYmeH+EYm&=TTmZ`%G^}+Y2|AvXoc%h9c@OfY&R;E2av^BCr|_5LhW&w zlff_!mEs)Kz++JN@72Uun3{SEr&=}QmDk@VQ zQ7h?+%2-cSruv~Kbhl}L2(>kZsO!C`er6cwU?=J?`Y5QQ-KY-snff7&rhW{y@=L~R zsEJrD?aTzD>P=9occS`BL*3WG)U%AeP}dJYUGKY-LI8z(QF}WY<1ruEW@|cXg)2<^ z>!_9NLJhDNwbCz9-+_~;`+h?W5SMJ*+?a|vv}Yn2@L7{7Xy6J|>Nld^+g-?RScg%2 zcOCUGMYXaAYKMcU_dyNxJO<+;)K;!QP4o@a0=A$svkQap6Aae-Uu{l&X-*tQP3Rcb zK9r~qf?HcwV~j?1)D|^BC)5ObVjvDcWn>8Iz6VePPC#XBl4ijs=GcgU5aUm)*+fc95LDY&bp*~cORC@~=p|-R&>i#aM*Lpa1z=u-Fe;9=YG{~i> z3tmM{Xd{N;HdF`ip;r1es)Hk_wJ_6Nm9_kqxpGN*eDR^nn zif5uG@DhgMtEfG!MBT6*HSou%j<1;Wp>6DbVo}#88q+YGdKYuPH>&?Z=KN@%IZ=pO z=|od6#R%#%Py@|Ht!x=;1(m1?ZZz$0p)#`p zBn>~IQg;n?L2z5!x~Ll)q8_e9)7}ZSq8_N<5xJ<9j>djigt~7ND&;#+5924O{tsb< z-v8qiG=X!d56l&8kFgo{UiU-Qy{MI~#cucoYJl)|_5k%!6KRfWzXLVlY}CN_U<4MJ z^TimZ_uosQ70yDXsscM>CDx`2^}e1#b#wzY;Yens6~|*eOh*me9re)Vn)W+UTQL?L zSb&;{3wicKF{rKS zZY;!9>I;y$SvxQV&!X;+BE1@?duQ^mr*|L?{KB#x!FKo*>X*A<;Uhi@nz;w{m(X(LpS6`AO8I%zFP$3HRz-HP zJIF#k8-0*PSwm3I#4ObH^Gv-0wbz?a1HOwfSdF^hcY=aubQYC~8dDGNYNsv+X|npF zo`vbC*UpDp(HzuPEJbbQI@I+$Q2ky+W#}3z^}$*8pJW}7cAqtrLM$i7pdOxL)XM$H zA3N3x)ZYO+jVI7a-N8Gk%q5{#HWVA-gQ$VMsEPSd6Ig)C#7a|Nhmm^!t7;4UVSsuK ztI>%yr~#t8+c##T_Iw~}z!4aYj~Yu+1J6ZeY9T69i&3dwiOSd-)K+c7+V}rM3hHPd zHpXM9nO;SuG@yrN^~V_01jeBDFduc@6jTPEH0PI~23U=nz?-NHZZ`F=PzyMMKF#bL z1$A75s$Vw-WZNr=Ky?^}`Ytp<4crXlF%6xVi%NAqCZGqEk$I@CScDC6jXD2zHu+DX z;cFVy;Z0*`PrDwCgJ^GxdM(GHI$DfMWd%0D?WoKhH1(g*Nj;3eH1$bO!+UWM>e*U_ z%1lKL`>z?Vr$MRSf!d1CP#O6ab^a7812w1)ZW)7m+24mqREis$dJk+)eK2Yuw`upF zGBOkOj6CC`pqbCdI9!LiVJ9jhyHP9NkDACa<9XCpT}4gw4^)R?z3ne$T~vDx>H{_q z)&D5eeG^gF`^qS256e*lzhqpB+N)Kl8>>(c**?^DCr}-nM%{lN^-u-m+9{7lzS34E z^6jz;QCqzNb=^nk)cb#sf@b)uIpOGI57+>;C8?N?-B3^cE2u5lgnHk1pi+7Om9eAP z3QwaZ7}?jJKz-D}15nrBhp~G9AElsyyr_q2uBk6W4OEHRf=#HD?m}(ZXQ=B>q6WT< zn&2O(>tp)a|CybH+PV>_2|R?leiAldd}|s7J#_O>57{cz3@c5&3boQ*ru{H#VkeE~ zO#3C&7F{<+^|!A}MolywwWU2x`#tE>4Pz;2WggUCPBZm|sP}j|YQ|ep&%!R$mK{QM zdA1gbubR_8=^bR)K>08P2eck3KQA`ETU~S4Hd;KyDMH6v#6;pT zRXF$sQG3+k`bNY@{>`y5zVB#be%8B01;JO|a+n@xQC?1Trk+L&qnwV#co#8=Xk)H@ zjq>xvv&3`6Jc6%+b%EGQ1QOb%7l^Lr9*REe7C&ovLEoUZ zgbqEM?Px!ZBZ!ui(UtzxEHERhYnyJepQ6p(B<0 zUgWE8C7Dj&r~Ge1$0NjxM2tD7w$X%M`}>K<2_2h>k+miJ&Ax|n2=~;*%-!ZhcN$s{ z3r$_@CpyxWWZImRfAH7DHSxVoODb`k7;Mh!mC)fO8ggY1LWjOu{E=gAP=(`T8>^W) z--G&PVhXX0C?fPhDI{JZbZoJ)I&jbU+Y|EB_>4KB56DkMZ`0{N{2SuqeTQjjMa!4? zAL2YwN<2YS5l<3LIR86-MI0jZCAfXONnt9{nV3$zL3~5#Xi5Bw_@2RI?dkJn zJzV8f=9m+`XdFd3g1Am3Q{Q3E-DbThd~Hm?T&_EYpPRO7%%*KI{zjw_;Y2)bI?{>x zM6^Q>7e`M{{DRGDYvc&K&~_irAZ`*mf`|`P;0WdXqqQYEHyt;|nY1+}-ZSUixJYfB zTZ^9%QA9_gc2?Ig!{Hy&IKg+3VgXS?=x9isC0eOsjvLs3zPe%tQHKaKbfQqCjlQ67j3h&w1p z5juV)`VpO|55-=@?c*~F58tlfCgNT#>23-Wi0;H1!bRvfLIjwO+fn|Jc!#)3RQi`E zG-;s!SG9{;Ct^0yx@u3t3!xpHlRVy1m$SfATvp?@0XLMRe(LPV`LGAg*a;CEmg+ciWd8L8D4tB~{lm+6Owas@i1s2=Cv| zpRS?DR+Gdr)a*t2J4f!paS zD#!dcWKf8-9Y!wspVx1TQHqDR0R#Z<%k@$=e_bW#w>OhZ5dqc F_%HZoD-Zwx delta 6938 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 diff --git a/ks_includes/locales/pl/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/pl/LC_MESSAGES/KlipperScreen.po index a63b962fb..fc80761be 100644 --- a/ks_includes/locales/pl/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/pl/LC_MESSAGES/KlipperScreen.po @@ -3,9 +3,9 @@ msgid "" msgstr "" "Project-Id-Version: Polish (KlipperScreen)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-27 18:24-0300\n" -"PO-Revision-Date: 2024-07-16 13:09+0000\n" -"Last-Translator: Marcin Laber \n" +"POT-Creation-Date: 2024-10-09 18:08-0300\n" +"PO-Revision-Date: 2024-10-13 14:16+0000\n" +"Last-Translator: Daviteusz \n" "Language-Team: Polish \n" "Language: pl\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 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.8-dev\n" #, python-format msgid "%s will be updated to version" @@ -340,6 +340,9 @@ msgstr "Przepływ:" msgid "Font Size" msgstr "Rozmiar czcionki" +msgid "For mouse control or to verify touchscreen accuracy" +msgstr "Do obsługi myszą lub zweryfikowania dokładności ekranu dotykowego" + msgid "Forget" msgstr "Zapomnij" @@ -364,9 +367,6 @@ msgstr "Ukryj" msgid "Hide sensors in Temp." msgstr "Ukryj sensory w sekcji temperatur" -msgid "Hide temp." -msgstr "Ukryj temp." - msgid "Home" msgstr "Bazuj" @@ -418,6 +418,9 @@ msgstr "Nieprawidłowy" msgid "Invalid password" msgstr "Nieprawidłowe hasło" +msgid "Invalid temperature" +msgstr "Nieprawidłowa temperatura" + msgid "Inversely affects the icon size" msgstr "Wpływa proporcjonalnie na rozmiar ikon" @@ -626,9 +629,6 @@ msgstr "Tylko dla panelu ruchu" msgid "Outdated by %d" msgstr "Nieaktualny o %d" -msgid "PSK for" -msgstr "PSK dla" - msgid "Package will be updated" msgid_plural "Packages will be updated" msgstr[0] "pakiet zostanie zaktualizowany" @@ -638,6 +638,9 @@ msgstr[2] "pakietów zostanie zaktualizowanych" msgid "Part Fan" msgstr "Chłodzenie wydruku" +msgid "Password" +msgstr "Hasło" + msgid "Password saved" msgstr "Hasło zostało zapisane" @@ -804,6 +807,9 @@ msgstr "Pokaż moc grzałki" msgid "Show Scrollbars Buttons" msgstr "Pokaż przyciski pasków przewijania" +msgid "Show cursor" +msgstr "Pokaż kursor" + msgid "Show only devices that are able to be set" msgstr "Pokaż tylko urządzenia możliwe do ustawienia" @@ -873,6 +879,9 @@ msgstr "Temperatura (°C)" msgid "Temperature" msgstr "Temperatura" +msgid "Temperature too low to extrude" +msgstr "Zbyt niska temperatura do wytłaczania" + msgid "The system doesn't meet the minimum requirement" msgstr "System nie spełnia wymagań minimalnych" @@ -920,6 +929,9 @@ msgstr "Aktualizowanie" msgid "Useful for un-responsive touchscreens" msgstr "Przydatne na mniej responsywnych ekranach dotykowych" +msgid "User" +msgstr "Użytkownik" + msgid "WebRTC is not supported by the backend trying Stream" msgstr "WebRTC nie jest wspierane przez backend próbujący streamować" @@ -1001,6 +1013,12 @@ msgstr[0] "sekunda" msgstr[1] "sekundy" msgstr[2] "sekund" +#~ msgid "Hide temp." +#~ msgstr "Ukryj temp." + +#~ msgid "PSK for" +#~ msgstr "PSK dla" + #~ msgid "Mesh calibrate" #~ msgstr "Kalibracja siatki" diff --git a/ks_includes/locales/pt/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/pt/LC_MESSAGES/KlipperScreen.po index 3c7de5e52..096266fb7 100644 --- a/ks_includes/locales/pt/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/pt/LC_MESSAGES/KlipperScreen.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-27 18:24-0300\n" +"POT-Creation-Date: 2024-10-09 18:08-0300\n" "PO-Revision-Date: 2024-10-05 13:15+0000\n" "Last-Translator: Paulo Henrique \n" "Language-Team: Portuguese \n" "Language-Team: Portuguese (Brazil) \n" "Language-Team: Russian \n" "Language-Team: Slovenian \n" "Language-Team: Swedish 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 delta 6925 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 u?HuUwt;_TC4`iIeJ*9;YdN&jl_\n" "Language-Team: Turkish \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.7-dev\n" +"X-Generator: Weblate 5.8-dev\n" #, python-format msgid "%s will be updated to version" @@ -343,6 +343,9 @@ msgstr "Akış oranı:" msgid "Font Size" msgstr "Yazı boyutu" +msgid "For mouse control or to verify touchscreen accuracy" +msgstr "Fare yada dokunmatik ekranın kesinliğini doğrulamak için" + msgid "Forget" msgstr "Unut" @@ -367,9 +370,6 @@ msgstr "Gizle" msgid "Hide sensors in Temp." msgstr "Sıcaklıktaki sensörleri gizleyin." -msgid "Hide temp." -msgstr "Sıcaklığı gizle." - msgid "Home" msgstr "Ana Konum" @@ -421,6 +421,9 @@ msgstr "Geçersiz" msgid "Invalid password" msgstr "Geçersiz şifre" +msgid "Invalid temperature" +msgstr "Geçersiz Sıcaklık" + msgid "Inversely affects the icon size" msgstr "Simge boyutunu ters yönde etkiler" @@ -627,9 +630,6 @@ msgstr "Sadece paneli taşımak için" msgid "Outdated by %d" msgstr "Güncelliğini yitiren %d" -msgid "PSK for" -msgstr "PSK için" - msgid "Package will be updated" msgid_plural "Packages will be updated" msgstr[0] "Paket yükseltilecek" @@ -638,6 +638,9 @@ msgstr[1] "Paketler yükseltilecek" msgid "Part Fan" msgstr "Parça Fanı" +msgid "Password" +msgstr "Şifre" + msgid "Password saved" msgstr "Şifre kaydedildi" @@ -804,6 +807,9 @@ msgstr "Isıtıcı Gücünü Göster" msgid "Show Scrollbars Buttons" msgstr "Kaydırma çubuklarında düğmeleri göster" +msgid "Show cursor" +msgstr "İmleci göster" + msgid "Show only devices that are able to be set" msgstr "Yalnızca ayarlanabilecek cihazları göster" @@ -873,6 +879,9 @@ msgstr "Sıcaklık (°C)" msgid "Temperature" msgstr "Sıcaklık" +msgid "Temperature too low to extrude" +msgstr "Sıcaklık ekstrüzyon için çok düşük" + msgid "The system doesn't meet the minimum requirement" msgstr "Sistem minimum gereksinimi karşılamıyor" @@ -918,6 +927,9 @@ msgstr "Güncelleniyor" msgid "Useful for un-responsive touchscreens" msgstr "Yanıt vermeyen dokunmatik ekranlar için kullanışlıdır" +msgid "User" +msgstr "Kullanıcı" + msgid "WebRTC is not supported by the backend trying Stream" msgstr "WebRTC, Stream deneyin tarafından desteklenmez" @@ -994,6 +1006,12 @@ msgid_plural "seconds" msgstr[0] "saniye" msgstr[1] "saniyeler" +#~ msgid "Hide temp." +#~ msgstr "Sıcaklığı gizle." + +#~ msgid "PSK for" +#~ msgstr "PSK için" + #~ msgid "Are you sure you want to stop the calibration?" #~ msgstr "Kalibrasyonu durdurmak istediğinizden emin misiniz?" diff --git a/ks_includes/locales/uk/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/uk/LC_MESSAGES/KlipperScreen.po index 214a92db0..b6baff907 100644 --- a/ks_includes/locales/uk/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/uk/LC_MESSAGES/KlipperScreen.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: 24-05-17 16.20\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-27 18:24-0300\n" +"POT-Creation-Date: 2024-10-09 18:08-0300\n" "PO-Revision-Date: 2024-05-12 16:39+0300\n" "Last-Translator: Andrii Komarovskyi\n" "Language-Team: Andrii Komarovskyi\n" @@ -343,6 +343,9 @@ msgstr "Швидкість потоку:" msgid "Font Size" msgstr "Розмір шрифту" +msgid "For mouse control or to verify touchscreen accuracy" +msgstr "" + msgid "Forget" msgstr "Забути" @@ -367,9 +370,6 @@ msgstr "Сховати" msgid "Hide sensors in Temp." msgstr "Сховати датчик t°." -msgid "Hide temp." -msgstr "Приховати темп." - msgid "Home" msgstr "Домашня сторінка" @@ -421,6 +421,11 @@ msgstr "Недійсний" msgid "Invalid password" msgstr "Недійсний пароль" +#, fuzzy +#| msgid "Temperature" +msgid "Invalid temperature" +msgstr "Температура" + msgid "Inversely affects the icon size" msgstr "Зворотно впливає на розмір іконки" @@ -629,9 +634,6 @@ msgstr "Лише для панелі переміщення" msgid "Outdated by %d" msgstr "Застаріло на %d" -msgid "PSK for" -msgstr "PSK для" - msgid "Package will be updated" msgid_plural "Packages will be updated" msgstr[0] "Пакет буде оновлено" @@ -641,6 +643,11 @@ msgstr[2] "Пакети будуть оновлені" msgid "Part Fan" msgstr "Охолодження моделі" +#, fuzzy +#| msgid "Password saved" +msgid "Password" +msgstr "Пароль збережено" + msgid "Password saved" msgstr "Пароль збережено" @@ -807,6 +814,9 @@ msgstr "Показати Потужність Нагрівача" msgid "Show Scrollbars Buttons" msgstr "Показати кнопку смуги прокрутки" +msgid "Show cursor" +msgstr "" + msgid "Show only devices that are able to be set" msgstr "Показувати лише пристрої, які можна налаштувати" @@ -856,7 +866,9 @@ msgid "Starting update for" msgstr "Початок оновлення для" msgid "Swaps buttons if they are on top of each other, affects other panels" -msgstr "Міняти місцями кнопки, якщо вони розташовані одна поверх іншої. Впливає на решту панелей" +msgstr "" +"Міняти місцями кнопки, якщо вони розташовані одна поверх іншої. Впливає на " +"решту панелей" msgid "System" msgstr "Системна" @@ -876,6 +888,9 @@ msgstr "Teмп (°C)" msgid "Temperature" msgstr "Температура" +msgid "Temperature too low to extrude" +msgstr "" + msgid "The system doesn't meet the minimum requirement" msgstr "Система не відповідає мінімальним вимогам" @@ -921,6 +936,9 @@ msgstr "Оновлення" msgid "Useful for un-responsive touchscreens" msgstr "Корисно для сенсорних екранів, які не реагують" +msgid "User" +msgstr "" + msgid "WebRTC is not supported by the backend trying Stream" msgstr "WebRTC не підтримується бекендом, який намагається використати Stream" @@ -1002,6 +1020,12 @@ msgstr[0] "секунда" msgstr[1] "секунди" msgstr[2] "секунд" +#~ msgid "Hide temp." +#~ msgstr "Приховати темп." + +#~ msgid "PSK for" +#~ msgstr "PSK для" + #~ msgid "Are you sure you want to stop the calibration?" #~ msgstr "Ви впевнені, що хочете припинити калібрування?" diff --git a/ks_includes/locales/vi/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/vi/LC_MESSAGES/KlipperScreen.po index 0cdb3ffaf..84bde2b6d 100644 --- a/ks_includes/locales/vi/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/vi/LC_MESSAGES/KlipperScreen.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-27 18:24-0300\n" +"POT-Creation-Date: 2024-10-09 18:08-0300\n" "PO-Revision-Date: 2024-08-12 07:09+0000\n" "Last-Translator: Hiep Nguyen \n" "Language-Team: Vietnamese \n" "Language-Team: Chinese (Simplified Han script) \n" "Language-Team: Chinese (Traditional) Date: Sun, 13 Oct 2024 18:41:24 +0200 Subject: [PATCH 037/127] doc: fix sponsor img links (#1478) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 78293ef7f..d1c45d61c 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,6 @@ We extend our gratitude to all contributors who have helped along the way. [Meet ### Sponsors -![LDO](docs/img/LDO-LOGO_SQ.png) ![YUMI](docs/img/YUMI.png) +![LDO](docs/img/sponsors/LDO.png) ![YUMI](docs/img/sponsors/YUMI.png) -Special thanks to [LDO](https://ldomotors.com/) and [YUMI](https://wiki.yumi-lab.com/) for sponsoring KlipperScreen and the open-source community. \ No newline at end of file +Special thanks to [LDO](https://ldomotors.com/) and [YUMI](https://wiki.yumi-lab.com/) for sponsoring KlipperScreen and the open-source community. From bdfdac9fb68366e444a07b32dd27998b37e85a2e Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sun, 13 Oct 2024 13:28:23 -0300 Subject: [PATCH 038/127] fix(shutdown): simple accept not working after 21a269edd2ff62e0efd8665e9336edc0966945a4 --- panels/shutdown.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/panels/shutdown.py b/panels/shutdown.py index cd9b40493..ad04a01ec 100644 --- a/panels/shutdown.py +++ b/panels/shutdown.py @@ -41,7 +41,11 @@ def reboot_poweroff(self, widget, method): label.set_label(_("Are you sure you wish to shutdown the system?")) title = _("Shutdown") buttons = [] - if self._screen.apiclient is None or self._screen.apiclient.endpoint in ("127.0.0.1", "localhost"): + if ( + self._screen.apiclient is None + or "127.0.0.1" in self._screen.apiclient.endpoint + or "localhost" in self._screen.apiclient.endpoint + ): buttons.append({"name": _("Accept"), "response": Gtk.ResponseType.ACCEPT, "style": 'dialog-primary'}) else: logging.info(self._screen.apiclient.endpoint) From 9fb17ee17f9554425cb784e35046643ab37b08f2 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sun, 13 Oct 2024 13:40:06 -0300 Subject: [PATCH 039/127] fix(camera): do not log ffmpeg app field decode errors, close #1480 --- panels/camera.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/panels/camera.py b/panels/camera.py index e1e8bd65c..7bc6e8771 100644 --- a/panels/camera.py +++ b/panels/camera.py @@ -97,5 +97,10 @@ def clicked(): def log(self, loglevel, component, message): logging.debug(f'[{loglevel}] {component}: {message}') - if loglevel == 'error' and 'No Xvideo support found' not in message and 'youtube-dl' not in message: + if ( + loglevel == 'error' + and 'unable to decode' not in message # skip proprietary app fields errors + and 'No Xvideo support found' not in message # will fall back automatically + and 'youtube-dl' not in message # needed for some streams, not relevant for our case + ): self._screen.show_popup_message(f'{message}') From 87e18ed6d4da8b06bcaf881d60db05167bc2a8e1 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sun, 13 Oct 2024 13:53:29 -0300 Subject: [PATCH 040/127] refactor(camera): logging --- panels/camera.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/panels/camera.py b/panels/camera.py index 7bc6e8771..a305ebaaa 100644 --- a/panels/camera.py +++ b/panels/camera.py @@ -96,11 +96,13 @@ def clicked(): self._screen._menu_go_back() def log(self, loglevel, component, message): - logging.debug(f'[{loglevel}] {component}: {message}') + if 'unable to decode' in message: # skip proprietary app fields errors + return if ( loglevel == 'error' - and 'unable to decode' not in message # skip proprietary app fields errors and 'No Xvideo support found' not in message # will fall back automatically and 'youtube-dl' not in message # needed for some streams, not relevant for our case ): self._screen.show_popup_message(f'{message}') + else: + logging.debug(f'[{loglevel}] {component}: {message}') From a7b8c4cfeb4a4cb8a569d1870c41d1206165e8e3 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sun, 13 Oct 2024 13:57:13 -0300 Subject: [PATCH 041/127] chore(deps): update pygobject and pycairo dependencies --- scripts/KlipperScreen-requirements.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/KlipperScreen-requirements.txt b/scripts/KlipperScreen-requirements.txt index bb441cd9c..aa01b47bb 100644 --- a/scripts/KlipperScreen-requirements.txt +++ b/scripts/KlipperScreen-requirements.txt @@ -9,7 +9,10 @@ python-mpv==1.0.7;python_version>="3.10" backports.zoneinfo;python_version<"3.9" -PyGObject==3.48.1;python_version>="3.8" -pycairo==1.26.1;python_version>="3.8" +PyGObject==3.48.2;python_version=="3.8" +pycairo==1.26.1;python_version=="3.8" + +PyGObject==3.50.0;python_version>"3.8" +pycairo==1.27.0;python_version>"3.8" websocket-client==1.8.0;python_version>="3.8" psutil==6.0.0;python_version>="3.8" From 7ae6ce067df7ec556fb9db1469452ac55ba5fbe2 Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Fri, 18 Oct 2024 16:01:59 +0200 Subject: [PATCH 042/127] Translated using Weblate (Hungarian) (#1486) Currently translated at 100.0% (322 of 322 strings) Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/hu/ Translation: KlipperScreen/KlipperScreen Co-authored-by: Zs.Antal --- .../locales/hu/LC_MESSAGES/KlipperScreen.mo | Bin 19175 -> 19498 bytes .../locales/hu/LC_MESSAGES/KlipperScreen.po | 20 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/ks_includes/locales/hu/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/hu/LC_MESSAGES/KlipperScreen.mo index d5b96661fe6cea6eb649692ba3b092b69966608b..100d59dcad65c7e6697bd61617eec000f92be381 100644 GIT binary patch delta 7224 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 delta 6913 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\n" "Language-Team: Hungarian \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.7-dev\n" +"X-Generator: Weblate 5.8-rc\n" #, python-format msgid "%s will be updated to version" @@ -339,7 +339,7 @@ msgid "Font Size" msgstr "Betűméret" msgid "For mouse control or to verify touchscreen accuracy" -msgstr "" +msgstr "Egérvezérlés vagy az érintőképernyő pontosságának ellenőrzése" msgid "Forget" msgstr "Elfelejtés" @@ -416,10 +416,8 @@ msgstr "Érvénytelen" msgid "Invalid password" msgstr "Érvénytelen jelszó" -#, fuzzy -#| msgid "Temperature" msgid "Invalid temperature" -msgstr "Hőfok" +msgstr "Rossz hőmérséklet" msgid "Inversely affects the icon size" msgstr "Fordítottan befolyásolja az ikon méretét" @@ -636,10 +634,8 @@ msgstr[1] "Csomag frissül" msgid "Part Fan" msgstr "Tárgyhűtő" -#, fuzzy -#| msgid "Password saved" msgid "Password" -msgstr "Jelszó mentve" +msgstr "Jelszó" msgid "Password saved" msgstr "Jelszó mentve" @@ -808,7 +804,7 @@ msgid "Show Scrollbars Buttons" msgstr "Görgetősáv gombok megjelenítése" msgid "Show cursor" -msgstr "" +msgstr "Kurzor mutatása" msgid "Show only devices that are able to be set" msgstr "Csak a beállítható eszközök megjelenítése" @@ -881,7 +877,7 @@ msgid "Temperature" msgstr "Hőfok" msgid "Temperature too low to extrude" -msgstr "" +msgstr "Extrudálási hőmérséklet túl alacsony" msgid "The system doesn't meet the minimum requirement" msgstr "A rendszer nem felel meg a minimális követelményeknek" @@ -930,7 +926,7 @@ msgid "Useful for un-responsive touchscreens" msgstr "Hasznos a nem reagáló érintőképernyőknél" msgid "User" -msgstr "" +msgstr "Felhasználó" msgid "WebRTC is not supported by the backend trying Stream" msgstr "A WebRTC-t a Streamet próbáló háttérrendszer nem támogatja" From 25a3f8293e62bd9561d22ba715b03897c7f837f5 Mon Sep 17 00:00:00 2001 From: Andrii <40995038+komandrik@users.noreply.github.com> Date: Fri, 18 Oct 2024 17:02:17 +0300 Subject: [PATCH 043/127] Ukrainian localisation (#1483) Ukrainian localisation update --- .../locales/uk/LC_MESSAGES/KlipperScreen.mo | Bin 23600 -> 24037 bytes .../locales/uk/LC_MESSAGES/KlipperScreen.po | 20 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/ks_includes/locales/uk/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/uk/LC_MESSAGES/KlipperScreen.mo index 8a2e45caf07bf9dda366f68504ee909b1c974967..4590aaaf7d9d665060129203bfcafa1ec3545fff 100644 GIT binary patch delta 7372 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 delta 6958 zcmYk>3w+P@9>?+TfA<-iv6*eg>|$dV+nCM0kX)lSqb3%S%W>@@q(4bVuH~N+2ZsnD zW4T3=lS()?A?k2kYRE}MqLN14UwJ|By7=O&i8rTj4um^@< z0s7)V)N_NefiZ3~oPq{;6@zdMHpNm*$FrD*HJDv0wnWtjVFu1aO=LIv;duO1~I<5kAhz8YHvJ*B*FAUy)YQHk}*hM<~dvUpfa%-)!`b{dz+Ct zo88C?%}LZkZet)O*Ec2{GcbwqO?wJT$&=O*$p6e({-KP_$2zzOHP9y1Ks&J}ev0bw zIBI~4sP}$C?c#0QUW3^*q#lXNTpqf$@*xzo!V##B#-Ua=9hJ)0kjb0nsDVF1?eQ0w zf+tWZ{u4EDbiDIk0y4JAMlG;6Dl=f}sBe--A^pwzBKb+{ij@Q)aYf1p-Yi|MO9 z2DLSfQSG^?%(S)b4_XUQ0}e!GVlrwWub~d(`wiXBjJMFB745<>Jb)VL6sqG(s7(Eg zTFI}djNL_L$}hp0P&leR4z)E&sONK0{j|0|fO@W%n}SwSWE%!yE$YKjD|^BEGHL>I zP#Jk0wH0e@`xaE{x1&1Vi+cZaTR&nwf$HZp>UsBh3O*FBpgO#YQFsU0P7|K!tS}qZ z-VU{rBGdpSsFe;wJwFlE@!Qsw*7ewq_7AWb-ay84o0KFcQ;gcPDX2rV z0QEz&8N1+q)Ig!hPKu*YTNsC$U>a&`a#0!SfPUB&{qZ4hJNsW~Zxo|4P=Y#)BT*g9 z#AsZI>Sz;cfNiJ=>_uNZfXc*S)O%-8171O8>Y8o8je6g|5i-6Bqo9tXt?{TAQ&1U5 zM-6npwVQ1(Ks`6iItq1m#@qS~)WEY)pY;M%f2(YLC%XMIBptrlDTQM-AK=)$s&-|5a2+Z`%4Y>v{~PeFy6PK2-l-qWV2$+bi7^w9>1#;TO~) zyo(wrsEM<(7}N^VFbK14dn;6Cx}!4E8`WQb)WQa%-kX5R&=k~j^H9Gd?!^?e!czOd z9#n@%Py-#ap0@3ksEJ)cZOvU|t|l_gdA>dB{Vu49^h9N#5H*qh7=nY4Ot{Tx3VL9& zbvo+B*{DOcz_zbLb+8#V^X;e=9>z|14)tE6bSKprs6*HW)qfAHhJ_e{1F zw@bVY#vDSe=nrg(jWV2$OHh0G6lwy`+4ec8iF!~2zK0sz7>^rJKSYO7XXGsE z@ZCoJIS$To#!Jp2|4Lmt4G&^RY>%^1zf=dY2cE@#n9}fJqr`{U%$EXYHkIxgfKGoiT8#U2) zu@+XMR(8kMBlDaEq+)B@+oCcz5qslW)E3=w+Z%rQ&J3HOQZ*WtdN=BH&qEFL6*7jY z#0ZSzgldI3sEH0j9kOYt_t#(@+=e;}hf)3ihV9TDLSBj}bVD7Y6{rW^!x-FUJ%Reo zzm6R-jAcb(fpsKmV$(4dKg1e%0UO|T)YgQzaVFLm$)MW|rJ%ih7j*_MAxSY=Z8>l_ z4AsFNRL5sfD+^@$@mL2nkv!DId!aH@g38#l)|sdYF2O83iVy4i_hlM-p$}^BN1#$T z0XeW{DJJ0&)QWDRGUaoh^BIPq-iyRoOhBEfcBnlbgz9G$>a$*s@wgtN-4qT{PzRM5 zhc{3!hLaZlEzHzI)!U;c&<&M=ei)BWVLhCQ4RAH;x&0W7Us+G1CVtU+4c%(ELqVzX z>EQe@M4~2A7c;R1Y6U}36MYMnp;f5&zO!a7 zL~z8Tu@JSA(U^p@QQv7P>M(wToImpmHo+`T)NCw9@5)e_xrT{&4^uF)v-5d(NBu2$ z0=4DCJCpxN3NO;2mA!%bTvnj=atCVV$80@-6Uvuo5>U?P3RnI0asC5 z=-<^@aU$w|8YW{trl5NOg#-$(*az034%;?N!cS0pT8aGHnt*Q3FJCKcPJNPf6NXd& z4)uB6LZvu`KMdO1HmLWDP+K_*tLgh+O<@uZrKpvp^>7C4g*;%!pfWNE^-DJ!gK!s) z!cS2v%IWDm*AE*~ACBs8HfkZ8Z2cJO{o5F;@89*1lgc<$O43n#Ux<2etgTN(?b$+n z6gOfT2KI7R*bKFmJ#D=NwFQ$f6c<_7p!(m2IgD?PQc$Y=dpjM(pjMoLYHx>HNdant z6Hr^S95ukl_Wo(CN!|6Z(_RZTp)72I9c_Iys-J1-4x_M+LL=OXO66JPFQf^0#Oa_7 zdcR}qFw{WPP+!9WY>fx89|jgU_e-!k^>L^SyoefaE^2F+7Lb4K%~~4tnH)x~_y_Af ztW7V7e*gRz*7lQ9+7;!3PQP4F51fHcJ!s57w@HG!{D6T8@l{OfbMNdwzy zLW-P!;dl&5f?0!u@eaO#kN0&x%WqIyatSqXb(XCa=3)!%gi7&btcCB```c`NKQg2_ z>89`;g-lMAX0#gB!4}jWU&cBZ{Ft*P@mQaF5$gG8u`a%Z+QKEaz7Kth+yvfxY$MQ@6*Ip&x(ksmLc}F4`>-pTp)C9C)N`qRN-ptV5;$a9pV$u z^@!T;Z)xRc#C%A+L+Fo?ced~%u}F2UM!do2Z&Gm-_9Fg9q)^wjf|y18otR0yN^~TC zAj$||B9@p#G_&tebeli;=QZLIv5xW})V=3}8|oM)=c%d*Euirgd!rs+A==nZH+p`IigJHVO9Cxf#9hjliSfi#Vhb^ii00mH zJW3oVLW!#DJqih+ra;HeG4NY@()1hl}ec;yO`Z6|Vb; z93C#h$;9u3Eiv`6x!m5UH0B^^w{z$+)soNIcn3aepSJEW<|%i zf21&&7^fDlNTQNRR>fYwVHo4&VFpp12(aUyp{#4VgDJLF;P=F5L=evo!Y_#ygsyTT z!^LidP*_47Ar26a5>;0mFE+B3d)Sux6IdM|#JNN^D4XANV?bF+p`UNrhQ0~DWfvav@%;;x CUi41@ diff --git a/ks_includes/locales/uk/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/uk/LC_MESSAGES/KlipperScreen.po index b6baff907..db622cb74 100644 --- a/ks_includes/locales/uk/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/uk/LC_MESSAGES/KlipperScreen.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: 24-05-17 16.20\n" +"Project-Id-Version: 24-10-14 10.00\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-09 18:08-0300\n" -"PO-Revision-Date: 2024-05-12 16:39+0300\n" +"PO-Revision-Date: 2024-10-14 09:59+0300\n" "Last-Translator: Andrii Komarovskyi\n" "Language-Team: Andrii Komarovskyi\n" "Language: uk\n" @@ -344,7 +344,7 @@ msgid "Font Size" msgstr "Розмір шрифту" msgid "For mouse control or to verify touchscreen accuracy" -msgstr "" +msgstr "Для керування мишею або для перевірки точності сенсорного екрана" msgid "Forget" msgstr "Забути" @@ -421,10 +421,8 @@ msgstr "Недійсний" msgid "Invalid password" msgstr "Недійсний пароль" -#, fuzzy -#| msgid "Temperature" msgid "Invalid temperature" -msgstr "Температура" +msgstr "Недійсна температура" msgid "Inversely affects the icon size" msgstr "Зворотно впливає на розмір іконки" @@ -643,10 +641,8 @@ msgstr[2] "Пакети будуть оновлені" msgid "Part Fan" msgstr "Охолодження моделі" -#, fuzzy -#| msgid "Password saved" msgid "Password" -msgstr "Пароль збережено" +msgstr "Пароль" msgid "Password saved" msgstr "Пароль збережено" @@ -815,7 +811,7 @@ msgid "Show Scrollbars Buttons" msgstr "Показати кнопку смуги прокрутки" msgid "Show cursor" -msgstr "" +msgstr "Відображати курсор" msgid "Show only devices that are able to be set" msgstr "Показувати лише пристрої, які можна налаштувати" @@ -889,7 +885,7 @@ msgid "Temperature" msgstr "Температура" msgid "Temperature too low to extrude" -msgstr "" +msgstr "Занизька температура для видавлювання" msgid "The system doesn't meet the minimum requirement" msgstr "Система не відповідає мінімальним вимогам" @@ -937,7 +933,7 @@ msgid "Useful for un-responsive touchscreens" msgstr "Корисно для сенсорних екранів, які не реагують" msgid "User" -msgstr "" +msgstr "Користувач" msgid "WebRTC is not supported by the backend trying Stream" msgstr "WebRTC не підтримується бекендом, який намагається використати Stream" From c670a2bdc889351b1c27af556245a56fe8e91cd8 Mon Sep 17 00:00:00 2001 From: Vasily Khoruzhick Date: Fri, 18 Oct 2024 07:03:27 -0700 Subject: [PATCH 044/127] fix(camera): don't use scale filter if angle is zero (#1485) scale filter seems to be expensive even with angle=0. On my CB1 having vf=rotate:0.0 in mpv arguments results in KlipperScreen using 100% of a single core vs 30% when it's omitted. --- panels/camera.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/panels/camera.py b/panels/camera.py index a305ebaaa..216407fb5 100644 --- a/panels/camera.py +++ b/panels/camera.py @@ -59,7 +59,12 @@ def play(self, widget, cam): vf += "hflip," if cam["flip_vertical"]: vf += "vflip," - vf += f"rotate:{cam['rotation'] * 3.14159 / 180}" + # Rotation filter is expensive. Omit it if angle is 0 + if cam["rotation"] != 0: + vf += f"rotate:{cam['rotation'] * 3.14159 / 180}" + # Remove trailing comma is there is any + if len(vf) > 0 and vf[-1] == ',': + vf = vf[:-1] logging.info(f"video filters: {vf}") if self.mpv: From d4035e9495946642dc0d08aade67b67198ba9948 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Fri, 18 Oct 2024 11:12:01 -0300 Subject: [PATCH 045/127] refactor(camera): filters and logging --- panels/camera.py | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/panels/camera.py b/panels/camera.py index 216407fb5..aad13b066 100644 --- a/panels/camera.py +++ b/panels/camera.py @@ -54,24 +54,20 @@ def play(self, widget, cam): if '/webrtc' in url: self._screen.show_popup_message(_('WebRTC is not supported by the backend trying Stream')) url = url.replace('/webrtc', '/stream') - vf = "" + vf_list = [] if cam["flip_horizontal"]: - vf += "hflip," + vf_list.append("hflip") if cam["flip_vertical"]: - vf += "vflip," - # Rotation filter is expensive. Omit it if angle is 0 + vf_list.append("vflip") if cam["rotation"] != 0: - vf += f"rotate:{cam['rotation'] * 3.14159 / 180}" - # Remove trailing comma is there is any - if len(vf) > 0 and vf[-1] == ',': - vf = vf[:-1] - logging.info(f"video filters: {vf}") + vf_list.append(f"rotate:{cam['rotation'] * 3.14159 / 180}") + logging.info(f"video filters: {vf_list}") if self.mpv: self.mpv.terminate() self.mpv = mpv.MPV(fullscreen=True, log_handler=self.log, vo='gpu,wlshm,xv,x11') - self.mpv.vf = vf + self.mpv.vf = ','.join(vf_list) with suppress(Exception): self.mpv.profile = 'sw-fast' @@ -101,13 +97,14 @@ def clicked(): self._screen._menu_go_back() def log(self, loglevel, component, message): - if 'unable to decode' in message: # skip proprietary app fields errors - return if ( - loglevel == 'error' - and 'No Xvideo support found' not in message # will fall back automatically - and 'youtube-dl' not in message # needed for some streams, not relevant for our case + 'unable to decode' in message # skip proprietary app fields errors + or 'No Xvideo support found' in message # will fall back to other vo automatically + or 'GBM' in message # will fall back to other vo automatically + or 'open TTY for VT control' in message # not important to notify in the UI + or 'youtube-dl' in message # needed for some streams, not relevant for our case ): + return + if loglevel == 'error': self._screen.show_popup_message(f'{message}') - else: logging.debug(f'[{loglevel}] {component}: {message}') From 56089e68d03c38d7a5c93084dddf748b245eae5e Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Fri, 18 Oct 2024 11:31:45 -0300 Subject: [PATCH 046/127] fix(camera): log other levels fixes indentation --- panels/camera.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panels/camera.py b/panels/camera.py index aad13b066..f88465743 100644 --- a/panels/camera.py +++ b/panels/camera.py @@ -107,4 +107,4 @@ def log(self, loglevel, component, message): return if loglevel == 'error': self._screen.show_popup_message(f'{message}') - logging.debug(f'[{loglevel}] {component}: {message}') + logging.debug(f'[{loglevel}] {component}: {message}') From 7ea3122908a7bdc173b86721e9b907d218d5c5b4 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Fri, 18 Oct 2024 11:33:29 -0300 Subject: [PATCH 047/127] feat(ks_actions): ability to show specific panels or custom menus defined in runtime (#1418) --- docs/macros.md | 19 +++++++++++++++++++ screen.py | 47 +++++++++++++++++++++++++++++++++++++---------- 2 files changed, 56 insertions(+), 10 deletions(-) diff --git a/docs/macros.md b/docs/macros.md index a0e81bd5e..706f16d2a 100644 --- a/docs/macros.md +++ b/docs/macros.md @@ -268,3 +268,22 @@ gcode: RESPOND TYPE=command MSG="action:prompt_show" ``` ![Prompt_2](img/macros/Prompt_2.png) + +## KlipperScreen actions + +!!! warning + this should be considered experimental + +Show a panel: +``` +RESPOND TYPE=command MSG="action:ks_show extrude" +``` + +Show a menu with items: + +!!! note + you need to escape double quotes because they are used by MSG + +``` +RESPOND TYPE=command MSG="action:ks_show menu items=[{'save': {'name': 'Home', 'icon': 'home', 'panel': None, 'method': 'printer.gcode.script', 'enable': 'True', 'params': '{\"script\": \"G28\"}', 'style': None, 'confirm': None}}]" +``` \ No newline at end of file diff --git a/screen.py b/screen.py index 59d4fa831..f8af7d6b2 100755 --- a/screen.py +++ b/screen.py @@ -1,5 +1,6 @@ #!/usr/bin/python +import ast import argparse import gc import json @@ -320,6 +321,9 @@ def _load_panel(panel): def show_panel(self, panel, title=None, remove_all=False, panel_name=None, **kwargs): if panel_name is None: panel_name = panel + if self._cur_panels and panel_name == self._cur_panels[-1]: + logging.error("Panel is already is in view") + return try: if remove_all: self.panels_reinit = list(self.panels) @@ -571,6 +575,7 @@ def _go_to_submenu(self, widget, name): menuitems = self._config.get_menu_items(menu, name) if len(menuitems) != 0: self.show_panel("menu", disname, panel_name=name, items=menuitems) + logging.info(f"menu, {disname}, panel_name={name}, items={menuitems}") else: logging.info("No items in menu") @@ -881,14 +886,8 @@ def _websocket_callback(self, action, data): if re.match('^(?:ok\\s+)?(B|C|T\\d*):', data): return if data.startswith("// action:"): - action = data[10:] - if action.startswith('prompt_begin'): - if self.prompt is not None: - self.prompt.end() - self.prompt = Prompt(self) - if self.prompt is None: - return - self.prompt.decode(action) + self.process_action(data[10:]) + return elif data.startswith("echo: "): self.show_popup_message(data[6:], 1, from_ws=True) elif "!! Extrude below minimum temp" in data: @@ -898,8 +897,12 @@ def _websocket_callback(self, action, data): return elif data.startswith("!! "): self.show_popup_message(data[3:], 3, from_ws=True) - elif "unknown" in data.lower() and \ - not ("TESTZ" in data or "MEASURE_AXES_NOISE" in data or "ACCELEROMETER_QUERY" in data): + elif ( + "unknown" in data.lower() + and "TESTZ" not in data + and "MEASURE_AXES_NOISE" not in data + and "ACCELEROMETER_QUERY" not in data + ): self.show_popup_message(data, from_ws=True) elif "SAVE_CONFIG" in data and self.printer.state == "ready": script = {"script": "SAVE_CONFIG"} @@ -911,6 +914,30 @@ def _websocket_callback(self, action, data): ) self.process_update(action, data) + def process_action(self, action): + if action.startswith("prompt"): + if action.startswith("prompt_begin"): + if self.prompt is not None: + self.prompt.end() + self.prompt = Prompt(self) + if self.prompt is None: + return + self.prompt.decode(action) + if action.startswith("ks_show"): + self.parse_ks_action(action[8:].strip()) + + def parse_ks_action(self, action): + action = action.split(" ", 1) + if len(action) == 2: + panel, params = action + key, value = params.split("=", 1) + key = key.strip() + value = value.strip() + params = {key: ast.literal_eval(value)} + self.show_panel(panel, **params) + else: + self.show_panel(*action) + def process_update(self, *args): self.base_panel.process_update(*args) if self._cur_panels and hasattr(self.panels[self._cur_panels[-1]], "process_update"): From ecc32647ed4f31a86982f2424ab765820ddd4f84 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Wed, 23 Oct 2024 21:55:29 -0300 Subject: [PATCH 048/127] refactor: make psutil optional --- panels/base_panel.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/panels/base_panel.py b/panels/base_panel.py index 23f959fc3..6f838d91f 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- import logging -import psutil import gi gi.require_version("Gtk", "3.0") @@ -10,6 +9,13 @@ from math import log from ks_includes.screen_panel import ScreenPanel +try: + import psutil + psutil_available = True +except ImportError: + psutil_available = False + logging.debug("psutil is not installed. Unable to do battery check.") + class BasePanel(ScreenPanel): def __init__(self, screen, title=None): @@ -396,6 +402,8 @@ def get_battery_icon(self, charge: float, plugged: bool): return self.battery_icons['unknown'] def battery_percentage(self): + if not psutil_available: + return False battery = psutil.sensors_battery() if battery and battery.percent: self.labels['battery_icon'].set_from_pixbuf( From 8d21b3deb81eb66bc8aa4482eabe58babffab42e Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Mon, 28 Oct 2024 09:45:36 +0100 Subject: [PATCH 049/127] chore(locales): Translations update from Hosted Weblate (#1487) * Translated using Weblate (Japanese) Currently translated at 87.8% (283 of 322 strings) Co-authored-by: Hideki Matsunobu Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/ja/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 77.9% (251 of 322 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (322 of 322 strings) Co-authored-by: China-Mr-Hou Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/zh_Hant/ Translation: KlipperScreen/KlipperScreen --------- Co-authored-by: Hideki Matsunobu Co-authored-by: China-Mr-Hou --- .../locales/jp/LC_MESSAGES/KlipperScreen.mo | Bin 9995 -> 18440 bytes .../locales/jp/LC_MESSAGES/KlipperScreen.po | 223 +++++++++--------- .../zh_CN/LC_MESSAGES/KlipperScreen.mo | Bin 17773 -> 18037 bytes .../zh_CN/LC_MESSAGES/KlipperScreen.po | 28 +-- .../zh_TW/LC_MESSAGES/KlipperScreen.mo | Bin 13264 -> 13196 bytes .../zh_TW/LC_MESSAGES/KlipperScreen.po | 16 +- 6 files changed, 132 insertions(+), 135 deletions(-) diff --git a/ks_includes/locales/jp/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/jp/LC_MESSAGES/KlipperScreen.mo index 929e9e7fb37b5b8221dfb38058218686a5dea312..d82a81a31dcb6781dd0cef9716385e084956aef6 100644 GIT binary patch literal 18440 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 CGfuJq literal 9995 zcma)<36LDsdB-0HbI4!=Heeu-Hb;;Us|$f)IK=8g0$pfV=tyj(wbQ#hXm)x$homJK zYi1<0Iu>MfpaUTZt!{K+2}$Tc#O13JS3)X9D3=L|Jv+0zAr%sb1SeEn`Te`!%xV{z zq-($V^?UvLd*A!s_kFMTgR3uEXSj|ae}EkQqA?%ANnhfJ>(Z|na}&G_UIy=gm&4)k zcK9&-DvUy2HH+XC@L6~$&La&|hDLH_-kD z)c6OX<{JmEfsaFtccIpugwp?vZ7;E04Ygk{!wca_sQq{g;%f7AC_V2(+4~`sUH<_! z-+x2dr%ly7S3vpedZ=|dP~(O}z5h+iTBz}lL)kUcaxRqqCa879q5PbO(%TL-eywf4 zY`Fu<5Bs3TAAy?hEvWH7v(MkL{DtMOq1O2!RGfSYzX8AYH3Z(v&&}|0$RqO<)I85Z zt!o(!?6U2(w!I0;FWceu@SyGg8I)ar4dw4&K>6wKp~n9Ul)azY_Jue>!b=KCQW z27d~r=eJPr|IW6*LU1d7u7R5GRw%y>hSEO@%HAnZ>zxTTJ_-qOlY)A0iRCINJJ#Cv zW~lw$0X6<0)ckKl+4DD0`rm`H_aC9+tOTX!-=OUIE!6nSS)AU#8tT1UE$@PQ{~p_p z*!CDGJrkhpoC>99CPbzAmThMsE-_C-&9@rry$&cp?1zfGlThpV3n)9^g&OxOsBzu4 z{Rz~#-`VzM1gq@55^CSChtf9$O3%Yk^F9VQTwu(%;hnTUAsFSiTPPmVKN8M_W8kfD zGt|DEg_`f@w*4Mdo$Iu1HIx@uK=t2c+Y_MTqY2&tH^95$+feKJ7)t-AQ1N*wMOJ>g z5vo1hw#Pz^p93}Ch022j91Isht+xZpj-ycT|E*;iDv$pQYTS(!Ii@s&q4YcorT+=b zSx|cBLe2Lq#ARkB4CaB-e-!GypTgVVUqOxgcPM{djuNIc*FnYgNT~TnL+PCarEfNr zo|t74YTQE09MpcTwC!V1_P-6;0`op(O7jWSK40^Pq5eTo^WF;;*JGjLVFuKEE|g!I zq2hN1)cY?&?ZYmp^_+$p|1Q+H_ieiq%8m~$FLAS9fdGkHX^_B;q>gJE&E${<45MF@s+W$MDo<9lY?>U2kQOz zpx*C<+Q*Nf_Tx$>(R_oT`tOEX-&CmQ4N&ht12t|r)I4jT=GkO<80!6>KwN5m4K@Cv z+pYaj@7)Mx$1PC%Gy)RJ<`F1=%!P{Y6x6({q2AkK*#R~0eklEa4yEreq2m6R@Iv^{ zw*OzD-Zy^~j=#k6Dk%LoLalQk#AH)z`y1iKw9`=W{WR3Pd8qj|z>DD?%R^B19D^G7 zHq^MkgUZ7))I7g|7eK{sZf239ixnzF_Z{K(;c-wOXi{ z>p=D*^25D|)+yV*iRfw%5v*&0z29f4Jt5@GJ;=9^dgQyvd}KKC3R1a#z|Ab=MPxaW zMyME&!CmjqOWa_-xau3?CS{3-HnWD=rl8S)sSdNdM= zBQ3}TWDl|u`3|DXL$)9r5XJXApCO7TU8_Tw zXW`?>P}{x=ZngKVmRYz1xeNI^@-h-bRv<2N5u)qS5M~5yviCJGjm$*`*uEi_6sNg|T?t znddp#WYo=gQ77X&3%pc1<|oX+sMqLbPOo=b+*YSCw#dmedrmB!&U!;k?bun9oGE_B8RI7!V@=tV7d5r>{8Yx&HZ*u~ zFXd*KBNDWdbVj32GUYeM;!KcC##>Eo%5z%%tdr(dC+Y|H3*AIU7J7>s;@PMd%;(R0 z%4^7s>N{R9RtBfC31?i3mum774XsXH#!sGaa4g*{%?)k>>rfm^V^1t`Ud487G?sSf z#XYCR&-khI=O|5i^L#uZ@1$GP8L#DY#-^LInW(=o(RXw<lY#zSDOF=X4 zr#&a(XJU=9hQOog@IksE<;UY@G&?%UTi}Ivlf87a8B^6zy^B^mV~Hm26L(~sw3l(* zdH#aX$t~`pSWC7gqKEj$!kH!y*+!fV4xh%Y7R+)Q{6vE7k!vUWej?@0_flp|vr8{p zn!SekP7o8xaaa*t1@H!mSo&xr9lLxTKa9Gx}{pvhIc5?Jh!LSk@ktCF}@#{ zGtF3eY%F1y@tpC**eEmBZr7x=0)#v z+~`x;bjC^g>6j9Q^h%{OJWUwvcUwFXVFq^ewlaRkjYoRh*}%%m;NXF$r=D&TQ8`PV zSHpAavkAGMdtw`;S{Ayb-E*yj)SQW!2{G2GAA*VfNTr=v!m0OKl0(8?5<#~Wt$!o-A zlVUBgOxjHH7h>}i|LLa*;>j+#%#75|hHS>c4{3Zlk30#Uqyc`N>?N|?Es{9rme`=< zNiXg<#4@dFD3Q%%&kYLeXg||jZOp3P&E_r|3&u&UAEmw!Y}FKwR1!PrT!4|P6n&Fu zipyqA@iGhj)O^Sm@w?D)CN#@OX|gfM-f3<+&6uc@b{C*-noHz{zckospVW7qMg>|n z*_3jlWbd?CB5kHoEU13U&Xy#B&0a;F#<;6WPN{8);kO!gIHOYNv4hj(*6`Pvnh2|x zI)W+|{5n()4G;S&&)5t46)0pP^J+YOb-@b4rm|;R%I6@R+So|#RHIQg$qNzlMAnTu zk8*mYT5Ua^?lq=Vjw^u)v-oSeN2zGYRLFei-12IoiT$#JR2J%z9zIh?YxpZe>TqQ6 zBeOYt!}~cQa7b_-2dBlTpf4K!I(}e!L>07-@~>3YjY689W`7|+;pt?8PCpZyo;R+zf&6>?A zMIZ-W)lo1sJxHB>+H;)h!D;54XFNNvFOr&x(V8d2FR6%Q>p)#Y%JUKfrh7?}xn^>@ zDHg36oo!0j)cX-zMdXg=*{DyH^fghJ4%0t;Domi4SQg~teQtXqAv8x%+LkSJwxuPiFykL z=xeu_f3f`X;_~{##oYd4{?%fkP%OMuEG#P)P8SPp#oSB9+*`%mMl&$zTUX5QEf)6k zM4!OrjrpGSYr41Z>E5%!6bn4u9=x`#nBP^*@0PmU!Sd##(w={@d;6+l?zv)aPv?pD z($eFl)o5SUy?aOb^^;6c%&#nMI~sNtbNOO^g`GI~7-D33_sVkH>SB&r(6g(UTM`V| zT+FXAohJ^I4=|aun9_=EJ&U)NPVS1B^76CY`(?iRgLNISX68GzjNHNQvu7A@dUAWa z*6yh&IP_Nc>)WxoXJbdHV|~>J#oWq|PH#0`$5)gW?=0nB4yLsJvCm5Fhf8h8c~usz zKhXcxVgU!AF6PhbH+QhqcC7T4ChA(Uy|m&@?LfufR$noXvNwx`=ZXcK`eNz1_U<>1 zmsYO(KgQ{`!j51s+lqz7+K$4J{_k`z+lM9-qP%T;`M?g_=z1gHdGfiQ#hbde?zCO9 zB7dk@z<kRfT9tLxR1 z-TPQw5Sih`);Y?_+=;LY3yTF7t3Rwi5-k2qWec<)+KlQBoAOILJ5N@P9&xbWYyR)ZQpf;Q~ zohRGaKKe^-r%Wl#rQE?VmrU34H%lG6O=*aMX1ztKt zWh%98!Gz8;?OkUMDoFO7Ew4LTakniwM@;9Lv*fQls4jv8O9(<7#;$*+%jr7)LeH`n zF#5BPs+!LC)b^3GDj(tNw!#1H{O=G3MAy+*62A7KN*Rv&HKwsVVQHL*?kja=0< zn{6Z*pHQ)3a$Celz70d#Q~W+Oy>q zN_STW)t9;x2IA*D`~Uq{A~R%G5UMI$SpEvZfxpPxpzg`%yY(RdCi&m4vNNmu)Cnvq zz0gj)^qMpK{N2B2wEd!xp58JUEUWT_!^o!is#4ps;2dE#B71A)zZQyeHIO-Tx;CEd zTD!Fp{Cx)=`rIPhZ){k#mCmYa8+)fabdIey#Z32}#ohZ}ArW@7x32}h!+obCrgWS$ zjYETy$&=^Vd}V)bRp*)KIS%o15E2Dy@@n~)wG>{lRa*x_;B-X}6{8SlhJB2-FpSwY z(q?6`uoDGF>4y;^s>iBrhi7bMOy`O1<@IlN?`bQac+Ccr-KIW$c1Qd4DOLJRTk2TO zM?-IEjyTlmK)OGUuXVR^rVWT~|gMY|^4Imvb=s+bY zu#c)vUZ`4PKyYG&`GRdKEFYaFahQbx_81M6^Ud=@F-H<}{4X&*n@^QbDh^(ff=YJT z-tcU+M`ZY!(SKzBcIe}-701d;SN4BKC|Uo7ibFpzak!B6#XJ^})|^u|u)=3_Rm)>B zPaO*?m&|4PH2H?uuLxp~!ct_a>7cuw^|FM~xNL9WL_QCKjPBEGWBW+ov6bGQb;t48 z`JV-$ur{z}c`)_fU3{hX-f5j-e2|pkN6A6ko}=27tF-LX{?Sy4h4aPOXTt8>e>TG+ z9cr~x8|$I-mYquO>o`z&<1M1@4OZ5_O#wOlf+=m@+_Q<#t%Ej;@pNf7r|{-iN^kAe zs>84LV4rcMRO%BHWxWmF?%l0^56*97xGMYKY1lBOrF%NhtcjS)CosEBM%Zs;=Hr8z npb6t_xs4TT-8n|injKbza5=sIr}k}Y&m8+fs_NvN@1_3*Ut&IU diff --git a/ks_includes/locales/jp/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/jp/LC_MESSAGES/KlipperScreen.po index fa2d5c2f1..cc510b46f 100644 --- a/ks_includes/locales/jp/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/jp/LC_MESSAGES/KlipperScreen.po @@ -3,8 +3,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-04-13 16:48+0000\n" -"Last-Translator: Anonymous \n" +"PO-Revision-Date: 2024-10-20 01:16+0000\n" +"Last-Translator: Hideki Matsunobu \n" "Language-Team: Japanese \n" "Language: jp\n" @@ -12,7 +12,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.5-dev\n" +"X-Generator: Weblate 5.8-rc\n" #, python-format msgid "%s will be updated to version" @@ -43,21 +43,21 @@ msgid "Add profile" msgstr "プロファイルの追加" msgid "All" -msgstr "" +msgstr "全て" msgid "Apply" msgstr "適用する" #, python-format msgid "Apply %s%.3f offset to Endstop?" -msgstr "" +msgstr "エンドストップに %s%.3f オフセットを適用しますか?" #, python-format msgid "Apply %s%.3f offset to Probe?" -msgstr "" +msgstr "プローブに %s%.3f オフセットを適用しますか?" msgid "Archived" -msgstr "" +msgstr "保管されました" msgid "Are you sure do you want to exclude the object?" msgstr "対象を除外しますか?" @@ -78,7 +78,7 @@ msgid "Are you sure you wish to shutdown the system?" msgstr "システムをシャットダウンしますか?" msgid "Asks for confirmation before stopping" -msgstr "" +msgstr "停止する前に確認を求めます" msgid "Auto" msgstr "自動" @@ -102,7 +102,7 @@ msgid "Bed Mesh" msgstr "ベッドメッシュ" msgid "Both" -msgstr "" +msgstr "両方" msgid "Calibrate" msgstr "校正" @@ -114,7 +114,7 @@ msgid "Calibrating" msgstr "校正中" msgid "Camera" -msgstr "" +msgstr "カメラ" msgid "Can't set above the maximum:" msgstr "上限値を超えて設定できません:" @@ -135,10 +135,10 @@ msgid "Cannot connect to Moonraker" msgstr "Moonrakerに接続できません" msgid "Changes how the interface looks" -msgstr "" +msgstr "インターフェイスの外観を変更します" msgid "Changes how the time remaining is calculated" -msgstr "" +msgstr "残り時間の計算方法を変更します" msgid "Channel" msgstr "チャンネル" @@ -147,7 +147,7 @@ msgid "Check ADXL Wiring" msgstr "ADXL Wiring を検査する" msgid "Checking for updates, please wait..." -msgstr "" +msgstr "更新を確認しています。しばらくお待ちください..." msgid "Clear" msgstr "クリア" @@ -156,7 +156,7 @@ msgid "Close" msgstr "終了" msgid "Close messages after a timeout" -msgstr "" +msgstr "タイムアウト後にメッセージを閉じる" msgid "Complete" msgstr "完了" @@ -168,14 +168,14 @@ msgid "Connected" msgstr "接続済み" msgid "Connecting" -msgstr "" +msgstr "接続中です" #, python-format msgid "Connecting to %s" msgstr "%s へ接続中・・・" msgid "Connection failed" -msgstr "" +msgstr "接続に失敗しました" msgid "Console" msgstr "コンソール" @@ -184,25 +184,25 @@ msgid "Cooldown" msgstr "クールダウン" msgid "Couldn't add network" -msgstr "" +msgstr "ネットワークを追加できませんでした" msgid "Current" -msgstr "" +msgstr "カレント" msgid "Current percentage and graph line" -msgstr "" +msgstr "現在の割合とグラフ線" msgid "DPMS has failed to load and has been disabled" -msgstr "" +msgstr "DPMS の読み込みに失敗したため、無効になりました" msgid "Date" msgstr "日付" msgid "Delete" -msgstr "" +msgstr "削除" msgid "Delete Directory?" -msgstr "" +msgstr "ディレクトリを削除しますか?" msgid "Delete File?" msgstr "ファイルを削除しますか?" @@ -211,17 +211,17 @@ msgid "Disable Motors" msgstr "モーターの無効化" msgid "Disable for 12hs with am / pm" -msgstr "" +msgstr "午前/午後の12時間表記を無効化" msgid "Disconnect" -msgstr "" +msgstr "切断" msgid "Distance (mm)" 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?" @@ -231,37 +231,37 @@ msgid "Elapsed:" msgstr "経過時間:" msgid "Emergency Stop" -msgstr "" +msgstr "緊急停止" msgid "Enable screen power management" -msgstr "" +msgstr "画面の電源管理を有効化" 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 "" +msgstr "エラー: 調査する位置を取得できませんでした" msgid "Estimated Time" -msgstr "" +msgstr "推定所要時間" msgid "Estimated Time Method" msgstr "予定時刻" msgid "Example" -msgstr "" +msgstr "例" msgid "Exclude Object" msgstr "対象の除外" @@ -273,7 +273,7 @@ msgid "Extrude" msgstr "吐出" msgid "Extruders" -msgstr "" +msgstr "押出機" msgid "Extrusion +" msgstr "吐出+" @@ -282,10 +282,10 @@ msgid "Extrusion -" msgstr "吐出-" msgid "Failed to delete connection" -msgstr "" +msgstr "接続を削除できませんでした" msgid "Failed to initialize" -msgstr "" +msgstr "初期化に失敗しました" msgid "Failed, adjust position first" msgstr "失敗時は最初に位置を調整する" @@ -294,7 +294,7 @@ msgid "Fan" msgstr "ファン" msgid "Filament" -msgstr "" +msgstr "フィラメント" msgid "Filament Used" msgstr "使用済フィラメント" @@ -315,7 +315,7 @@ msgid "File:" msgstr "ファイル:" msgid "Filter" -msgstr "" +msgstr "フィルタ" msgid "Finding ADXL" msgstr "ADXLを検索中" @@ -339,19 +339,19 @@ msgid "Font Size" msgstr "フォントサイズ" msgid "For mouse control or to verify touchscreen accuracy" -msgstr "" +msgstr "マウス制御またはタッチスクリーンの精度を確認する場合" msgid "Forget" -msgstr "" +msgstr "無視" msgid "Full Update" msgstr "フルアップデート" msgid "Gcodes" -msgstr "" +msgstr "Gコード" msgid "Getting IP address" -msgstr "" +msgstr "IPアドレスの取得中" msgid "Go Back" msgstr "戻る" @@ -366,16 +366,16 @@ msgid "Hide sensors in Temp." msgstr "温度を非表示にする" msgid "Home" -msgstr "" +msgstr "ホーム" msgid "Home All" -msgstr "" +msgstr "全てをホームに戻す" msgid "Home X" msgstr "Home X" msgid "Home XY" -msgstr "Home XY" +msgstr "XY軸をホームに戻す" msgid "Home Y" msgstr "Home Y" @@ -384,28 +384,28 @@ msgid "Home Z" msgstr "Home Z" msgid "Host" -msgstr "" +msgstr "ホスト" msgid "Hostname" -msgstr "Hostname" +msgstr "ホスト名" msgid "ID" -msgstr "" +msgstr "ID" msgid "Icon Theme" msgstr "アイコンテーマ" msgid "Initializing printer..." -msgstr "" +msgstr "プリンタの初期化中..." msgid "Initiate a PID calibration for:" -msgstr "" +msgstr "以下の PID キャリブレーションを開始:" msgid "Input Shaper" -msgstr "" +msgstr "入力シェーパー" msgid "Insufficient privileges" -msgstr "" +msgstr "十分な権限がありません" msgid "Interface" msgstr "インターフェース" @@ -414,7 +414,7 @@ msgid "Invalid" msgstr "不正" msgid "Invalid password" -msgstr "" +msgstr "パスワードが無効です" #, fuzzy #| msgid "Temperature" @@ -422,7 +422,7 @@ msgid "Invalid temperature" msgstr "温度" msgid "Inversely affects the icon size" -msgstr "" +msgstr "アイコンのサイズに逆影響を及ぼします" msgid "Invert X" msgstr "X軸を反対にする" @@ -434,13 +434,13 @@ msgid "Invert Z" msgstr "X軸を反対にする" msgid "It may take more than 5 minutes depending on the heater power." -msgstr "" +msgstr "ヒーターの電力によっては5分以上かかる場合もあります。" msgid "It's possible that the configuration is not correct" -msgstr "" +msgstr "設定が正しくない可能性があります" msgid "Job Status" -msgstr "" +msgstr "ジョブステータス" msgid "Klipper Restart" msgstr "Klipperを再起動する" @@ -462,7 +462,8 @@ msgstr "Klipperは再起動します" msgid "" "LOAD_FILAMENT/UNLOAD_FILAMENT are hidden and should be used from extrude" -msgstr "" +msgstr "LOAD_FILAMENT/UNLOAD_FILAMENT " +"は非表示になっているため、押し出しから使用する必要があります" msgid "Language" msgstr "言語" @@ -471,13 +472,13 @@ msgid "Large" msgstr "大" msgid "Last Duration" -msgstr "" +msgstr "最後の持続時間" msgid "Last Used" -msgstr "" +msgstr "最後に使用したもの" msgid "Layer Height" -msgstr "" +msgstr "レイヤの高さ" msgid "Layer:" msgstr "レイヤー:" @@ -492,13 +493,13 @@ msgid "Limits" msgstr "制限" msgid "Load" -msgstr "" +msgstr "ロード" msgid "Loading..." -msgstr "" +msgstr "ロード中..." msgid "Lost Connection to Moonraker" -msgstr "" +msgstr "Moonraker への接続が失われました" msgid "Lower Nozzle" msgstr "ノズルが低い" @@ -513,7 +514,7 @@ msgid "Main Menu" msgstr "メインメニュー" msgid "Material" -msgstr "" +msgstr "素材" msgid "Max" msgstr "最大" @@ -525,7 +526,7 @@ msgid "Max Velocity" msgstr "最大速度" msgid "Max:" -msgstr "" +msgstr "最大:" msgid "Maximum" msgstr "最大" @@ -543,16 +544,16 @@ msgid "Medium" msgstr "中" msgid "Memory" -msgstr "" +msgstr "メモリ" msgid "Menu" msgstr "メニュー" msgid "Minimum Cruise Ratio" -msgstr "" +msgstr "最小巡航比率" msgid "Minimum:" -msgstr "" +msgstr "最小:" msgid "Modified" msgstr "変更" @@ -576,13 +577,13 @@ msgid "Network" msgstr "ネットワーク" msgid "Network connected" -msgstr "" +msgstr "ネットワークに接続しました" msgid "Network disconnected" -msgstr "" +msgstr "ネットワークを切断しました" msgid "Network not found" -msgstr "" +msgstr "ネットワークが見つかりません" msgid "Never" msgstr "未" @@ -591,37 +592,37 @@ msgid "New" msgstr "新" msgid "No elegible macros:" -msgstr "" +msgstr "有効なマクロがありません:" msgid "No info available" -msgstr "" +msgstr "利用できる情報はありません" msgid "No mesh has been loaded" -msgstr "" +msgstr "メッシュが読み込まれていません" msgid "No wireless interface has been found" -msgstr "" +msgstr "ワイヤレスインターフェイスが見つかりませんでした" 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" @@ -658,7 +659,7 @@ msgid "Please recompile and flash the micro-controller." msgstr "マイクロコントローラーをリコンパイル&フラッシュしてください" msgid "Please wait" -msgstr "" +msgstr "しばらくお待ちください" msgid "Power" msgstr "電源" @@ -724,7 +725,7 @@ msgid "Refresh" msgstr "最新表示" msgid "Remove network" -msgstr "" +msgstr "ネットワークの削除" msgid "Rename/Move:" msgstr "" @@ -788,7 +789,7 @@ msgid "Screws not used:" msgstr "" msgid "Send" -msgstr "" +msgstr "送信" msgid "Set Temp" msgstr "温度設定" @@ -806,7 +807,7 @@ msgid "Show Scrollbars Buttons" msgstr "" msgid "Show cursor" -msgstr "" +msgstr "カーソルの表示" msgid "Show only devices that are able to be set" msgstr "" @@ -830,22 +831,22 @@ msgid "Smooth time" msgstr "" msgid "Speed (mm/s)" -msgstr "" +msgstr "速度 (mm/s)" msgid "Speed +" -msgstr "" +msgstr "速度+" msgid "Speed -" -msgstr "" +msgstr "速度-" msgid "Speed:" -msgstr "" +msgstr "速度:" msgid "Square Corner Velocity" msgstr "四隅の速度" msgid "Standby" -msgstr "" +msgstr "スタンバイ" msgid "Start" msgstr "開始" @@ -857,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 "システム" @@ -869,7 +870,7 @@ msgid "System Shutdown" msgstr "システムのシャットダウン" msgid "System:" -msgstr "" +msgstr "システム:" msgid "Temp (°C)" msgstr "温度 (°C)" @@ -878,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 "このパネルは3x3グリッドで最大9本のネジをサポートします" 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 "全体:" @@ -902,7 +903,7 @@ msgid "Unknown Heater" msgstr "無効なヒーター" msgid "Unknown security type" -msgstr "" +msgstr "不明なセキュリティタイプ" msgid "Unload" msgstr "アンロード" @@ -911,7 +912,7 @@ msgid "Unretract Extra Length" msgstr "" msgid "Unretract Speed" -msgstr "" +msgstr "非リトラクト速度" msgid "Up To Date" msgstr "最新" @@ -923,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 "" +msgstr "WebRTCはストリームを試行するバックエンドではサポートされていません" msgid "Working" -msgstr "" +msgstr "動作中" msgid "XY Move Speed (mm/s)" msgstr "XY移動速度 (mm/s)" @@ -947,13 +948,13 @@ msgid "Z Move Speed (mm/s)" msgstr "X軸 移動速度 (mm/s)" msgid "Z Speed (mm/s)" -msgstr "" +msgstr "Z軸 速度 (mm/s)" msgid "Z Tilt" -msgstr "" +msgstr "Z軸 チルト" msgid "Z offset:" -msgstr "" +msgstr "Z軸オフセット:" msgid "commit" msgid_plural "commits" @@ -971,10 +972,10 @@ 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" diff --git a/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.mo index b9788cfdc1a8863e6a1cb8559e0ad4e684c751dd..add941c6b29798936a334c6ede31478fb89eaf87 100644 GIT binary patch delta 7195 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 b@YLe1Cl@RWjL01pJdisgB$&~&d&vI)hFIFK diff --git a/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.po index 00f7de35f..e72f31e00 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-09-24 00:13+0000\n" -"Last-Translator: \"Neko.vecter\" \n" +"PO-Revision-Date: 2024-10-28 08:38+0000\n" +"Last-Translator: China-Mr-Hou \n" "Language-Team: Chinese (Simplified Han script) \n" "Language: zh_CN\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-dev\n" +"X-Generator: Weblate 5.8.2-dev\n" #, python-format msgid "%s will be updated to version" @@ -104,7 +104,7 @@ msgid "Bed Level" msgstr "热床调平" msgid "Bed Mesh" -msgstr "网床" +msgstr "床网" msgid "Both" msgstr "两个都" @@ -344,7 +344,7 @@ msgid "Font Size" msgstr "字体大小" msgid "For mouse control or to verify touchscreen accuracy" -msgstr "" +msgstr "用于鼠标控制或验证触摸屏的准确性" msgid "Forget" msgstr "忘记" @@ -421,10 +421,8 @@ msgstr "无效" msgid "Invalid password" msgstr "密码无效" -#, fuzzy -#| msgid "Temperature" msgid "Invalid temperature" -msgstr "温度" +msgstr "无效的温度" msgid "Inversely affects the icon size" msgstr "与预览图大小成反比" @@ -476,7 +474,7 @@ msgid "Large" msgstr "大" msgid "Last Duration" -msgstr "上一次的持续时间" +msgstr "上次用时" msgid "Last Used" msgstr "上次使用" @@ -639,10 +637,8 @@ msgstr[0] "软件包将被更新" msgid "Part Fan" msgstr "模型风扇" -#, fuzzy -#| msgid "Password saved" msgid "Password" -msgstr "密码已保存" +msgstr "密码" msgid "Password saved" msgstr "密码已保存" @@ -811,7 +807,7 @@ msgid "Show Scrollbars Buttons" msgstr "显示滚动条按钮" msgid "Show cursor" -msgstr "" +msgstr "显示光标" msgid "Show only devices that are able to be set" 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 "交换Z轴按钮位置,同时会改变其他的控制面板" +msgstr "交换Z轴按钮位置,此设置影响其他的控制面板" msgid "System" msgstr "系统" @@ -883,7 +879,7 @@ msgid "Temperature" msgstr "温度" msgid "Temperature too low to extrude" -msgstr "" +msgstr "温度过低无法挤出" msgid "The system doesn't meet the minimum requirement" msgstr "当前系统不满足最低要求" @@ -931,7 +927,7 @@ msgid "Useful for un-responsive touchscreens" msgstr "帮助控制触摸响应不良的屏幕" msgid "User" -msgstr "" +msgstr "用户" msgid "WebRTC is not supported by the backend trying Stream" msgstr "不支持传送WebRTC至后台" diff --git a/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.mo index fb9feb595258c7a0d334861269a1e4b525861377..0e15644c5a42b69076b5d93a1e2b6b191b80d3d7 100644 GIT binary patch delta 5704 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 O#d0q<=4DW1X25SIi)oqw delta 5773 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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 095749104..928af62cd 100644 --- a/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.po @@ -8,16 +8,16 @@ 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-06-01 12:09+0000\n" -"Last-Translator: 峻瑜哥 \n" -"Language-Team: Chinese (Traditional) \n" +"PO-Revision-Date: 2024-10-28 08:38+0000\n" +"Last-Translator: China-Mr-Hou \n" +"Language-Team: Chinese (Traditional Han script) \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.6-dev\n" +"X-Generator: Weblate 5.8.2-dev\n" #, python-format msgid "%s will be updated to version" @@ -128,7 +128,7 @@ msgid "Cancel" msgstr "取消" msgid "Cancel Print" -msgstr "取消列印" +msgstr "取消打印" msgid "Cancelled" msgstr "已取消" @@ -137,10 +137,10 @@ msgid "Cancelling" msgstr "正在取消" msgid "Cannot connect to Moonraker" -msgstr "無法連線到Moonraker" +msgstr "无法连接到Moonraker" msgid "Changes how the interface looks" -msgstr "改變介面的外觀" +msgstr "改变界面外观" msgid "Changes how the time remaining is calculated" msgstr "更改剩餘時間的計算方式" From 6ec9c3a934d27aca3eb29d6d49956cb6f07d4744 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Mon, 28 Oct 2024 05:51:21 -0300 Subject: [PATCH 050/127] chore: update changelog and tag 0.4.5 --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 05853edd2..2e5f23b0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,11 @@ 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.4-* +## 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 ## v0.4.4 (Sep 16, 2024) From e01acf8edce2c8f7e97c7bbb7b5460d621b7150a Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Mon, 28 Oct 2024 12:08:28 -0300 Subject: [PATCH 051/127] refactor: simplify the windowed flag do not declare multiple variables in the same line --- ks_includes/KlippyGtk.py | 2 +- ks_includes/widgets/prompts.py | 2 +- screen.py | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ks_includes/KlippyGtk.py b/ks_includes/KlippyGtk.py index f6df2d134..9da1e66ea 100644 --- a/ks_includes/KlippyGtk.py +++ b/ks_includes/KlippyGtk.py @@ -210,7 +210,7 @@ def Dialog(self, title, buttons, content, callback=None, *args): dialog = Gtk.Dialog(title=title, modal=True, transient_for=self.screen, default_width=self.width, default_height=self.height) dialog.set_size_request(self.width, self.height) - if not self.screen.windowed: + if not self.screen.get_resizable(): dialog.fullscreen() if buttons: diff --git a/ks_includes/widgets/prompts.py b/ks_includes/widgets/prompts.py index 9d4daf08a..752b966ad 100644 --- a/ks_includes/widgets/prompts.py +++ b/ks_includes/widgets/prompts.py @@ -113,7 +113,7 @@ def show(self): scroll.add(self.scroll_box) content = Gtk.Grid() - if not self.screen.windowed: + if not self.screen.get_resizable(): content.attach(title, 0, 0, 1, 1) content.attach(close, 1, 0, 1, 1) content.attach(scroll, 0, 1, 2, 1) diff --git a/screen.py b/screen.py index f8af7d6b2..659cd73d5 100755 --- a/screen.py +++ b/screen.py @@ -62,16 +62,17 @@ class KlipperScreen(Gtk.Window): panels = {} popup_message = None screensaver = None - printers = printer = None + printers = None + printer = None updating = False _ws = None screensaver_timeout = None reinit_count = 0 max_retries = 4 - initialized = initializing = False + initialized = False + initializing = False popup_timeout = None wayland = False - windowed = False notification_log = [] prompt = None tempstore_timeout = None @@ -131,7 +132,6 @@ def __init__(self, args): if mon_n > 0: logging.error("Monitor selection is only supported for fullscreen") self.set_resizable(True) - self.windowed = True else: self.width = monitor.get_geometry().width self.height = monitor.get_geometry().height From ce420aea94e8ea2074a20cae08c592ac746bcbe4 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Mon, 28 Oct 2024 12:19:04 -0300 Subject: [PATCH 052/127] refactor: screen switch comparison to the right --- screen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/screen.py b/screen.py index 659cd73d5..e96829828 100755 --- a/screen.py +++ b/screen.py @@ -891,7 +891,7 @@ def _websocket_callback(self, action, data): elif data.startswith("echo: "): self.show_popup_message(data[6:], 1, from_ws=True) elif "!! Extrude below minimum temp" in data: - if "temperature" != self._cur_panels[-1]: + if self._cur_panels[-1] != "temperature": self.show_panel("temperature", extra=self.printer.get_stat("toolhead", "extruder")) self.show_popup_message(_("Temperature too low to extrude")) return From 7127b5d624cbc7395c14e5f94fd30d33579a35e9 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Mon, 28 Oct 2024 12:31:48 -0300 Subject: [PATCH 053/127] fix: matchbox kbd --- screen.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/screen.py b/screen.py index e96829828..d18e3f4c5 100755 --- a/screen.py +++ b/screen.py @@ -1228,13 +1228,13 @@ def _show_matchbox_keyboard(self, kbd_grid): keyboard = Gtk.Socket() kbd_grid.get_style_context().add_class("keyboard_matchbox") kbd_grid.attach(keyboard, 0, 0, 1, 1) - self.base_panel.content.pack_end(box, False, False, 0) + self.base_panel.content.pack_end(kbd_grid, False, False, 0) self.show_all() keyboard.add_id(xid) self.keyboard = { - "box": box, + "box": kbd_grid, "process": p, "socket": keyboard } From 8d78778c5b33fb8535fea6b10780d1f6b6162779 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sun, 10 Nov 2024 12:36:15 -0300 Subject: [PATCH 054/127] 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 055/127] 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 056/127] 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 057/127] 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 058/127] 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 059/127] 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 060/127] 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 061/127] 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 062/127] 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 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 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 zcmX}v37pQ=9>?(`OvoNtV`eNf#+YI3W6ct}np>7gS2dW%zRZkD;Xz>xH8}PbYYgI! zEjv-ED{`e0m5V$xhBlIPtLuKg^ZfLGy}t84=luWY{LeZ6|MNV|m|bK}YT#VOVhbI| zAEc(d+qp-JIQMlqwK^AG*}3~M0!v~CER8*|9zKTm;zTTtbFmCA!Z2Ke_uxh>iaSx) z?Zw*81>7MDy1@l3fwwUpOWfyNEVjain1azb&+2=y5%oOOL@HHrt{5g_S?qvSF$t?< zDrzFrPz!k#OK^X;gn~M*v=eKw6!lzGhrOtke2ChiPpp0wwG-D-1KvjUE6H7JU?pUQ zt}$vMk06`tCSe7fj&-@eTTDS)vd=t>wWxoD+L3%@k?tqdjqa}ITzRa38ZZ)dT?|HG zQ`FA%MJ?)d?g07Rhud35$s2;;49QK%tLM64b%)C8`f-ox9d0n4$k8lVXD-FUcLTMuwN~GU z+L1%38y`jWJ8AVZ=6O{AeAM;d;a&I(YNu}nDDd96qP$spS!$qG&;~WJ?x=x#Vc`l; z1C1~<%t_du_8F)h`v7@e+~=rw;s>mR<=JLEx_YROZJ-MU4cH&GHOZ(Or=nIi&f1^1 z`ef9KrlVGng^cYMq9(o-d0pH=RR1%m@y?^}a|QK?e?}G*aKBPe#}Z6SE3J&G-;e4T zV>Uw#*xu}lnn+L7z>lIF1+_6b&>gN2V6i|g~hl!9io9JM8@QIBLN*2NR3 zt-pbK35)Zb8e=8Yjk}`SlTbT25H-=ksBwm)COQq(Zzk%xU06Oq;eZNw0`>VkkGkMG z>QitFHRG`G&;-k(ZWxK0KoiuCC8DnHh8m|Ysy!9eKf~%1%~=@G7B8Zp3s#^yXG-~1ns0sfUH6gumT5(C#r>ZP!oa(3@jzC@CJc9k#0B!8To~Vym zf7D7wqXwFY8hEOiW$hj{ktNo?!P>W>Znz7zu!E=@eu!G&ace&t5eQvykp^|Rg8Hhx zhU!ovGBlyGsF~MAUDpcr2s)rXZb_(}c@nkaVW{iIqpq81_1UQL=cD?q4^U9Y-FCtI zsFi+f?6K>etL$SfBRWW_>F354eXZ zu-mQ=@(FX#nhVYC<|*?!>K&;N6`DX4>Y2u&Zrld>QgunzKHPi`!)SlmoLwl-e?A4R zU@2;#)pkKHYM`A~KV|37qOQ-k`Zd&!{SP&PD$$_@#h`B36ZOb?TYIXt&yw8V&846f zEw&SztiBy}qob&aeP;CwsDZDdCU_nB5_M%8gxX`xrl<)eqTZp0QR586SR9T44YZho zUbZ(;Z|62thoh(tXHkzPA9a0LOz8K%3~J@gQP(A*&Od=AagaF@OHhB-44@{S8N>5e zhcz_lh8s~kvDfM+Q3G8-U3b;$*Udk$6zyRRL+2})RZ&}B8`Zz5*$y?)Zf2i`?7s$1 zwhM-$>S@U1bQ7$;64fyWb;BKa558;lW9Dg8|BI*_7oa|NKU@1v)XM)vJ(_BP*wDbS zsE)18j@I4{b;Ca9Q|55&LHl^r$MGQQ(H%$q9A83xvleL-+KGy&^YyVbw!@+rc*q)( zP!o6p^(Y3JX?A{^nT>kpuUmZwYDI@p{m-FR9<=(8=1tVNf1)N(Ca&=MfU8bH4H2l7 z#+j{AGwgyIusiAoy{!H?>RlO(>OaBG&p^G*uULJRx!%l0jkgoa^ZvO*6g0C>Q7_F! z)WA1U1DB2u)vKZE@u=(Dq9)W6HDGU4zk$}Cj(Ue)u=*-2M}0kNoZYJH^M8bb2KvHI ze1jVBiY~w#X0gVh_DZM$YN1}DhN$b>TYC~}yeCkPW)NyeCR@8l^ze z>PxM@*4%^|aJ$uynkP~HzeMds5cTf-V(q`7zJS6KLY6~KsA>ZHua1#4=*ID=dJD6& zwLfC@e&!H!oSmPH8gM#l0@-$cx%sxa+dP80->HB#oJIX(F&``7ZPXT4Xd3$5*2MDE zo0?s)4E4UKfd-qyQ7a#3jz|68Pq6co&FRRmz21Mm)kvBO98ZRD58yV^mh>f>l#cm? z-?u9eIZQ-A=5<->ocOBVSsbe?Pcu zRu;ENR}xE}Bk@H40nxEBMB(3#{QZP9C&h{W%~81iCj~^uJ0aXv{FJsQki0;CC2NR|XGuTuG8sj_COYbp-sBt!Oy!S`zY+aX>G+W7 z<$FUFJM?y6C;AxOIVw~5CmBFakzz#0gb;;)SMm30(wWR4I`Tuf6zzX1m7!z{S!pM< zE3K^j8}1}!$s?pTX-^W!o#Pt{&8#xd?122ry03`771D$3B{fK37k{>rKggY9 z8imbwDi}kylP=^W(Q%qgA^#;C$R*N_v?2Y8j(f;kqzUgCN3@G@yl8k0&y$4Iv=ulk=wtAuBa39py#I*%EhK4xSJju|;*%yXlCv)U(p zqwpkuCA^7`i74gUM)dISMAY@)M!ZsL{K%2vea8+-&PeeeMegy->eThu>-6)Pbr;l1 z9-TTqIW@)gOinBOo1PKgH$7zt^$96yiGFpxmA*&)M8C3r4__y$w(k?wuFTM3qf^7v zQ%0r?&PW;J>qqzUQ=-c=X}i&JCQ3DQU?W_pJ3{36Zt(X3olAkmG{6GufJYaZR5I4^GX_ zU$?hlW;UmM=Y)u`P;pyoLbD>p_Z|pt$@VLnuB@21V0SQkN&dn)1#hehu32<>-8A33 z+2)e@JC_ABa~aD=G{4s;HGkK~wiw{UTSiyCv@bV*^WxyF^#yB|+99uI*d+ zY3-l(-?gt*`PH0)DO+7|wGU>!mRDF&&)5#b{87@eW3u1eG0P`C(Apn)AkG)*)WWy# z6ybfRh(>vPHnMZ}5JD9foSS($CzBDF&xZWvZ?VDoGqwbm=J=bPd-%y+UXIAkX2C9) 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 063/127] 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 064/127] 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 065/127] 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 066/127] 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 067/127] 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 068/127] 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 069/127] 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 070/127] 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 071/127] 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 zcmcJW37lP3eaA0LScXmZT`ovSBAJQ=-`rC_Ds-~XKZ=Dk^3_4DZ?XMXpb zdzSzC@8`V7YsVb;`GC*#{es{$a8g|mJj?Ukz3f%kw1fEz*edmKCid>YjJFM@}FZ-R~BFTk;22vO&P&EROT z+t(ih>#4s4ijLoa2ZCoY*^%HV@Fehj@Dy-9C_1hKwU1Sx)>{K=+&bTW7YGZ22SD|I z9MnFZ1z93^-q-&Q6d%41YQ8r?je8q}^x!w3_IJ{U-99b^52hZ0M}rygZ17W{`0<3t zFM<3EHuFdHeH%Ohd%rr}DWLYX(6=uKC6|;|=uGAKR#cTn{H64ZX)2af^|JKj1K^8%>xf9vbt1&^WrDyV(`!sEN3=mg@ z%RsI38E^!6FDN-a2#U_9K+(Sy6kqm%2ZCP%M}Xh(?R~!e6;SlN3YtEG8b9KkAUGL3 z2Gl%bLCrrA)cO~L2Y|Cc@#6|m<30vzy$(?P%J}vYsPSt(-U%K={XUNmgBte)sQo_; zYMow>f8*QBp!)r*$De@Go40&@|50w;gF)H#QK05K)7Q@jM^K*)ivD?^UxS+W9smB|kGgq|1J(aDk7K|?sh{uPUkYme+5Y_!-<|}u z&$O=>z&h$TfLiC%p!W3uDEglUMc=c&eFrGMyaEYKv&Hr7n4tx#N`acHcSKa{|!Q<+koM(Wlmq6|7i{M4zw?WN+XoH*oL!jt5162EY zpy-_fYTZSk)@$?cv!M7>0!M;3f#TB>;3V*A(D($(PTv4E&--xI+j!E-^a z+XPDArup_OL9MeK+z)I6MMng()u0pPU+^%0G|#s{#epAyqUVR8=KYb!pMsj_m!SIp z3j8Du2VfMFsjnID{Qe$Las3D267bic_Bnro+fNA;{p&%^^9U$E@(g%5_zmCw3fMyZ zO>h=CWuhB@3%H2-17HXEGjJ)m80NKsUk0xQk2#MV1k8h?@0+0bame{D?>QQrN_{FQ zIzI)Xg2Bt6{M!K+xP64+5!5GxCxCN6$>rm|UIIn;ouKCXQ&4>V9wvt)re)GZO z!B+4baJ7HG5fmL?24P*W8`QdQf!hCjpyodZriot}Q1h(YcoMiBJOwO+uq^l~ zC^?@s#rcKVU@P^HgIebW@M!SYpz?!5FLrVo1B#w?;N{?bAS?)8^Ys%+7G&4gg3G`s zz*E8BdOQWDYyA1(+2C|g`|bcm_f4SW^*N7!=5aR&$w3)Jm4m}C#fHEspvHB9@`vle zvEUa#&GU6o>%0nTKl@K}d^!%4{hbbqo>Abj;3QD=&IZNLBq;f2K-u#{p!Dl0@WbHq z;HSWU07b{*%PiFkI>3Xd-wBQa?*S#Z-Jt0Bny0^vw6MuA2zC_Z(7dVeD*|9L+s`Ti9s z{W)}|!?Qe22JfJ~1)K-I3W^_NQAW{oB^ZLO9&Z7~*C#;9`!B&W!S90CgYSacPk}|n zr%!^iquW8r^FC1XzW_>ZuY(7IKLaI?w?WDA1CNK#cI%uB%6=O`?Joh!Zf*cI|C6BT zc^;Jhd=oqbd=(r8z5%M=k#oGhfa*626g?M$;^PvJ*MXwrMo{}$4{E;8gR+xHz@xyI zL5+J86kYFu8h6|kPH)ZxrRSr4eJNN+{aWxW@H$ZR{fWmOP~%?(4+4JzYM*a|W5Ls} zbb5IOC_1vB?B_}FBJg$a4DhtM*c3Pg)IPgGt+yT=2R;KzzOR8F1K$Bhf>$-W{$1eN z)b9Z6z-Pe2!5zN+tG@md@Q-N!H7LDkL5ZYiogUYL=Td(R91FhW>+ge_chr2RUlYJ1 zsV@T00b4=IWgRH`p8`jNJ3+1UI=BG*EhxR8Pepo|1WyA$?dy+w{36%_k!Zb;~u~6+kXy9?!N)GzY`X^b*6)&YXNBUf*++`1U3Ig z@N{r9cog^&cs}?VsD8&Ua`asaYJ3Wmd{%?UfRBLM&lV7q3wptM;D{E-zZNh@{RU8U z{1jAw1vkxi1gLdS10{#C;ECV`pyW3n6rCL&yFv9|4>o`gf}-a|P~+bMCxP#QgxsL< zYPbFhQ0u)6jsxES#itXOxcO#)TBij(9*jV?65IeT1HTPoy1|&G#6mC+rokVB4}w?I z=?L&`a18hXD7lVV?)JM7grwkFPs)`ciN%m;puqE>L#* zA}Id64T>LiD8KaL6!1iFDyaTTe7zl%oNod}=R=_U`QuKJO=+wd7JWM%6*j86x1QuMEMZ?o&^u|{ZHmu`m4{;lm^=W z6St0u>+6D- zC=+Nq%eRF*|FeI_TxvciP}@lvO?iznhoaB^4uTSRJmV)*^pOvpLU~3NK7Z{X_^^LJ znfk9N@;MJsR#GmaBq^Vx=(E*9Fpe=R{PR8F?f&^R@Mn}u{hVLsxsfuDqR%yykn##; zBz^k8-%@@;DNxo>o}=7MIhFVS1^yl7yObj-@#oKZ=%P%bTu*t5@-juAk5K-F@=p|f z{>(wp2{tn4-C#H6Hs3y#w#7WxQQo7RO?|t67sHqQ!{2*61)N5|SHW-jwr_w_X!|_) zpOjIQLn$ZHrq8*QJ1NKb`o-WcsehQF&!v>}X}cP{f$|%QJ_l0%QV)C%=KaU*iMjne zCxbWAb~JOh!QO>0NJEe`1r|5G$+ zRs83D@Mz|^0Ia7RPC3NS`9q%dxy6CyTYCHs8pKtOoF0O$3u4^ASk+PO@j^-Fy2)k10 zbl4h&rOsrc7$w7EE?gDm3#nW-7@dsT6Qy)2CKo99bCIFtI(%wYL|dq6nOsO%{r| z&Z)z_Uy#qWM!e0pb);5l-Fy^w=SpD#D#B#Wp1TrRn=4w~mM$eDBR$u8UDQ_8z^eWl z7vf<23lwT2L+q%O=j)p;lrlT;EE9UZr zp(yYj^HFOKri#&p?m{uj{4aeA9i?J2*Ojg9U07KN+jIG_O>)U+ObjRhO-#v-I#byd z!L(8_XMgJ366sVc!a^*x)wiW{g(%GCimCQgn~g2F7rD*|-mEU>#mxEHa6zI}@M8*X z`5Yp>4DFg5t%}@Jb5!UEF3S}=g6WkNDo@EuqllTFfaM7wJE|B;1rn{fRZe1=#OhS0 zlxfmSnC&54Aa?so8U=7~({8dX)NA)yWGy*0=W^M6Vr7&MrgtQ=E22W!k?S&^F-eqf zPqam0I+t5n81%k~IfVHrlSpNm8qG)M>9$f@hGd*4TN#=;EJ;BZ`%#MqNDR*I z3S-00bd-R#U5Qk&p`js|P8Ev8Zud9LM1?{^s%^Y|c02vSE7yGqm1?9QHUpmrF~JcqpZl5<&uN%|^wpTz+LRy_C;K z;SO@=G-iO!A?)lu*<0o{;#}zxmL?&zuJ2QIQ=C-QGqVy&l zoym*|X4E8Tmwf!IoZOq%NndwAlAxbs{wN4_KnKkRi5VXb4To?T_ zi7Y(Ih;=jb`CQ)p4cjDlDMzBMi1P{yop9g3gP!6ruP}?@UKR7*8U(l7qhec!o3Y@g zYziwf)n*gWR!GS)t2_R>8AcVz6&YFo$ZNbP&RwS{HSD;Vyg^Wl_+c}$qVQi zUk&6lT?u^Z!U!cJ?9EE&x){x0c~hQp1fWGmK021kv7|Oy#8*n`;6GZGYVYQ$)Yjou zC(+hc$|u^o87=J$W|fHEi!F2qm$&7TQ6ae8Yr>obGSfUxBe*;lUY2NE8O)ASD>{lz z!R!=r&>y^Mwm`rMQ`xX3%5*javvWjv{RtI??O~~hWezN@FldOXO z_&?gcTjpsMGbCdSI}?QhPN~0v0Le^=B7t9>NNl2XHx9HNKT>c$UPKop276x&m&Omv z;)mtIoT8;TMWO_fLa0R|MR;DANo7k#JaRH3`k6W~nPPKCgpBjf(%E%!6e&QiP)I4p zGu8!gR<_K@g$_v4j=~O4XsAy7Lm(T3?O{jDA3o?{kNsJ=u zLTe-!(@@hRP7f-LP>?8!W9CUvK&QCztd=Rd{3Dn#xUeH7CeX zL}h36LDcqsRA<; zLuDg!H#kq9;l<|;-gf8>#_#eV8Y=lKImn7oO5d$nD$SZxs)2>UD`*PlXK@|MDP-Uo zWuTo2C3y46ve5|?ygMA33>M&NmHZ4iSjFvwPF%cT7Yb4fV(%3{goT8TFD{j~zf{Ob zbL4o5uwA~t)JcMsBnMiM$`*nJE{9Y~lIg@-n)$V-6FQKH=oFHv$L%P{a0F|J2Po+b z7RVsnUrXSXL#sg{M2b5txk|~>poXUYmPDlsV`=8E>`%+Nn$2hPR@o(VyS2haCLmWu zU_6k4g!Ap-r%Jo_B;D1TxmAi_-a9R_)T%+U?COx;DO57-jws#PP#0WPBGtT{Q(wN@ zA43)Sa)vfhpsMv8=uvbiSSIqwOU zu(gE|nGkN>qr6-HBlKifa1yF&S=1RJc{OyqzhcKivJ^|sQa`uO{`#YIlhS_2xKO!y{A`LKu7{TKsYh1<@hiEqKGbAkE=gKM#&JSu_E zgQ5rXa)`1&cx{V?PQBC|G9&tjcP)gMm5Rk2nrrRkHe@62IVWpNMypb7kpeX#Gl33T z8jTxAE68~1=}x$T0|6MPJh(wp9zFI zdU43bZTmpnf`4!~3fz!H1)cIT5mI%2!-b)I^obIF+7js&yVj5cj6HDyXH?IO7nzGj zM~Ik-aN_ET;pKU9G#g+}(e2UoswC^=9;6Bu9_+{%NcTA1n#V1;gHvl7-&(Imys(|3 z>bVs9-Ft?~k{zuqA(cV3xU_$9c4b!gBu-O#ug#olUi& zq;6rP^rF7Gup*VLzpS*PP~Vbk3hNfkuV08)(y_H(;%y2ijGHj2e*8H8h2zIHoj2*+ zaTCXlt5YUh-;z&c3tR_rvQfk8UrB`s$CpVwcQ7m>Ani?BB$XBCeLsx{N z7o!G_c#WNo&O+l#cL;EnFre1DqVbZ-^i5&win``G%`^KqHojq8ox(8ZsQMOkxhX7S z_KlrslG@2(TL+FfDqg&}Wmf%#{ryBb0k3{02MHZ*n!*cPQ^mRkX|nTl{VZ~jLQ|OS zv})nv36r_N(wmD%XTviu4#$s~T(`9T@(3sDw!a`pdRq)9Hk?-%j4XtG>&iW0c}w5= z@-{teF7N7F+jk4NyS$^ky}YAu4bOW+-u8y&t>vD+HGMbJx*-@{-lr!1l($)@?d2_T z_i~S2RrlRq-c0Xa#%VCUddhpsJwf?V=DE3VEpONG*RP@F_m($@eYf_lr|TZ5U^N;T z(_4OCuea$nv-I6j-oes5_Oj@1n|8Cm>Shjl@^2R}_x9b&HlFLdg|2>?puAC2u+R0- zwpF_mNsm)uguU9!n4TuraR<|D^&LU^UR!Omabc}iFam6a-9h|k0&B$0 zsX_U($lx}J-5N8f+#8fPRk#K(9Dzny&)5*5vh^Lzu?zVbA0!qAY^P;+-(7Ur;o2n} zF&aU$(C35H*@!CIZVvGvm zhy@i6yIpJ(!zDRYr2)b}Xbq|Ckeq@sh{@*PW9$53QW!$AL(cpFt*C^#1Qy+DR{Xr& zir5<4OAie@2FMI0q&qCHJYWf8%nn#D5o=!Y2tS3~Dc)!wKt}RO+9W2jmX5dGsbIKR7glhG_m@`^o{q-JtxiCD~wkt)q zsYQNGcekoc%E?CtP#eTI_k9{Z?0^fBC}i69<B`uX+Y2p3vHJ&G%%CQ> zQ*n!_wO1iG*5paXq3 z`XoQ8EVMd_+X8Z{`bX0cK}X!V*KO8`89xSBD{PYFYnnXq&e6FbuH*>G5~TWj?<8Gg z$2-Lr_X3{oZZJ)Qvu+5Y)arvGAy#HmMtXcdsLVp?qBd6flF;lTPS#+78$c>qEj}fb zjI{N{c?BE$Cb8^ek{e}dmf5=0MWIBggwIu!j=?>9?fkS$5Qke+MCwb(;g&#=VX0`6 z)ylHnLT(H?wFffI_RGEaO9CKUkVu9~YV^J)hwz*u-iTIhL$+o+7Z<$n*k<2t_I|IX z=e_tBzZF+C)-?Sd9;Nouw{lgb65X5;yL`gWV&js%!cnQ3SOdM#VT&ZKpaEyt?#OWsg6CVqr)!V!a^SM8!H95ygA zN}&hx&>|g*bauk+%2>4$+jBX0W!s8(&IP;8AeWjWlD12(jl?Vks(PnbL9o?oW{Wa8 z%e!m2Qc1tbBQytz1#9rfBGsOt{CPAW&S*sLhT0~1VHT=ww0?X~Ja}+eKcrKX;tb_k z2HEh#ELZJ+p;Z=QT!gtw|FpPM*`6A?;BPisx~W78PWzk!)*;UtVbFwvKf;Mej@&{& zYcSgrOs^)FJ`ngHU^NZh4c740{Bl)So6tg^S=J6`McDM98RRQ#R-w~?b*;txsb1Mb z+zBpnE_T1?DnF)Yb}FOy)Jt!vRa=Q!v(LYN&r^3CkbBF!AmCA(_BPnD&DCIv>0fLv zeJBbCcjNB;QuiS|6OvI}@C=f4&E=XM%8kY84^;bU6+r9+U}|cC+N{&5_na9nVIj8{FOjuU6>|^rZ0dtH>I{Z; zS|*7O$a)|a{Zv=`nSsKKgkF1&GY1LN?#3!nFzK`$FiAL5n2*CX(C(=*JJ7sxv_^|g z((YtLma9Ds$mGp0RU)PO;tl&9h^fUsW2aB_w4P)yQn#7fXbZ5$=%FW9WZEj8#N`pZ zc1~JD$o^oVWwM0dTXbV3RWW;sRhx)82SZL9Qp;ad^QqEhSnBbEy?OXpOTFcK&T(D@9IvMA2Ba)eQ*kU`} zT>0%p`BC;)(MTkZG*DZMt#QtX%Eouh{o}+axe&Nun{jTu|Cbst1gaE+;%K|0e=u)| ztIU88tF+n(W~`#eSx8XxD~&D6#89@fMSAHt)lX1Wn9>14f<*}Z zvAycHLUEfYTHb~Fo1=p}E;1-an{SkA{T`ujfb;XB(c!OG3B@Koly~yekeM?$cs=4| zqg`O}Uw{$?gvx0XW?^vHF#bcF>yOapRj^A_!+!mCJRbf|V3YDVI+?fF)^`^>^A;yR zFL%V%uIAL%2|;vqW`I9nkZ$Hsy@#q_i*pM9TX|2!cL~E?)`^W+%EVjJUpI$&Na}````Drw^YF0N@?6Bkpy-fUka6$g=Ih$O&s#-%VjK43DcOIyOaIHd*W>#EL z(1UjQ>sw*?8ivK$i#wNK9nx504`wlQ5#u0S{%0GRk-oO!o`YH8jD#qriq-Ng&Qa6br+qQo21W#*;cMg$u9GaM zc4QmNY%bH-ds$o|M>?moI(zZ#sks!6Q-Gd-*N z%Wpmj``wHRD?}qP)^+k1+;Xc5M<$5>JGq{! z!Ey<sSkXD3R~AB0tvJ$o&!xlyLC*ThrS&ayEkAl~XD zFhb5wx&~{se>W0!@!u`-2F6w$C~VDM1Zuhn3rGfdcHhoA;STx{87kskDAQqjay3#( zWJ&{Ts(}= zxjc869`=K^>g#458Kh*e4mnn>VT^n$uE!XRi~neXp(eRoUNw>b-GCScBWsA0xjqLQ<~DT!!mpf{+-cTV5`{YJtb! z%vFCofC_n;A$!xX+JhO1%l&kbo8l({zJeJ$E0Lx>SJNY0URyQgs{WBc)p-P`70>Nl zVAW#Qpg?*nVuXA43qHFNQ>fb;+OPN|c4UM=e1K2@iw_SqMnf-oH0>2;K8y}vS2XCR zlPdwQ2Ri1;WtkHNdn~%rI51mhKuuqC-~n~g5{&bF;;K8oMwU|>;&3~N5GORBHTPEr z`WCZC_F{P~3wpKD?gk$eho5GPol50R*pS6syX4jm;uy@1PzbvV^QtoZbo%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 072/127] 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 073/127] 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 074/127] 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 Ae9i@#tZ#s!SI0hglI66|_Mj3RK_xtjS$G`t@C%H= ze=r%Ng6_I>)N}c$g8jG{LqW%#sAnRIiH)erT2VXgM^(HFwWDY4{2|o35lq3;ScI2Q zaTeZT%o2=66_|^fuSdmMk2KZX@7NoIs0a3=cJKzO#iuY4Kd|>Np$hvA73eyubDlEy zxeQc79~NUHF2tRv0tPSv_o6!J9I=B@Ok-jk)uJi92`^&~&Y}uRE_d%|p$f~#Wmttu zv<0=k1DE4I^x_0+-PcHy%zsFH#{?^kNn)ZFmADO+cnhlaPoQ?Z8`YUX)Vg8oQB>ej zOvMYRj{Jn`P}B<7c+@*jLB-F-MDm+*1`61SYSBHYgqv`FN2peHpaMQ==Xaw5?L{4~ z=TPfLtjDmH>-SKFM}*w_i&1&fF^T*pn}HHlpc1UI3+nI|uGiW7TTux*QJvX=+R+|+ zJ#2jmRnVKLc<*2YoA`bsB1YHfjSt)N=vr3RJ%8mGs}s;BF?=(q7cg98`dp?ffWer>8Iy&!IZ;A?g)O zp;~?gRlrqL$7WIQe$E=b%8iqRT9@H4(1W>{j`{Yw9+j{e^>y5bDyYlai|Rl>YG?cG z{9(MA>laW3oIrK*ti3;N{RWlKnPHH_U=A~IS(W?4u?7pc4x{eBhzfWfy*Q29*OrSVH=jCesG3R8+Zj3=XLkmF%t}QIL@Lf{S?)a8O*~UQ12??E;qnZRKn$` z`3h8m20Q-%>iJH4zX#RH0aTu6Q0ot4oWB2227347sK6f~pRAciz3ceZ?v4^s?<@GsP_3>*edhO~p4)~xJ5QmbfQJ}p;Rx!T9zzu{jtX=JQ}H6I z&|k3_=TOfV)wqevP=~P!HNO@WXC0~|EvV-=UTDQU4ib}j0wXO$qupfOmQcM4X3?}WwzsP|$x3A^z0X~e{ z(HQF0yo)N}Gduqy>aXA|s^G{vw}UCxY}BDE!V(OjHrj>!H`^UMaR&8EIEngxub>{h zhB`!^de>Bp;<^+SD1=_DL9O449(){CSQvGf_h2c$Z|ARJ1lPXk2KRG`MFmc{H|NP(Qyu7<7 zWNc5!@xln_bciuwdB)skjQJqnm`MB%qwpGf@Gp$P#HGf}!Cch5V!R2fQS*a13s>P> z?7%F16mP{LoQH2=GM-&(9FxRgf`I(j-bgGkCWY%#RAH+z9s5xW97Qd7442?(%)oCk z0_PSQvj}5Q^U_hzm7of)z?-qQ&~XE;1ZERhgQ~0xwbKDq#k){DdeO!Yqvj1`Jf6oK zyo$=RaG5a)n1Cv<02OaV>Tn2OV=f>Mgz`#Gq>O7IR0 zpcdMMn%{?MxF0<@hMM;y(j+slWG263ybNLqG@%w==iV@zP_2Iwwd38W9S))99kL!n zB_6@Wcm;Kq{y=po<}TMH)H_c_ZL9!eIDf{+KnYi%TJ#WV!ET({5vo;vsDw}3_-<69 zeW=6r3Toc4^%VNK{uovG{8IP+V$?e67|Z%5kAW8QqZVke6Iw8i>y`F?FKU6UsLnit z+R;WWi2nK{|Vd(5Kt?-tbM40c3=<>pgQyms&&8OE%+zu zRV}D+3rs*=r=jNOp*B#2dalx1gIX_GLH|7r9weZaI;frPL?t+G<0Gh@p2IM_gzCg+ zs8=w7YWa0k0XI+`n?}9+$h%$RPW~cIx691^x!0F zXJJ)tC!$aVC8Ii0gze}`W5yWha9l)H`W31pQ<#Cjq25)p*G-U% zYW*@)+>ct|0ULh=_54Rl(@2Np>QKHcS>L?MKnuT#N_ZBP@CzIN26YC0 zMiuZMs(?AwZo+ufr#J;?PCIITC92gesGs>-)N_xcUe&YcDB)oSnmCMlr>9T_jG_`< zz{U7Is?fhN7bAUcL1n0gt5JtBVB^iGJS$Nh=|DZ-gX*~BqyJiPCjqr)2$S(3YT+}e z1mma$u3#emfYdPaebokhes^a9)V$T!F4V$3sCoUEiUXLA!+!c-$Y9(CB5G(G*M-=C zTTnYXgL*X|p$hog#(zh(ei~J9bgkRLRBImU(3N36)}l7L4f!)qIW}+s^(7of{eG{b z9t^E>4^fo$PMl4=3YDl9J$OHAelLdL6R5(rqYm?4EWl4}Jha~ZpO7BMU=}wLP>GYR zsi;I*sKb(TvOe~5Vzei%VSV?;jh(&CYkNC8H>5w8l$TN2=Jz&b2OG0}UQbYoeBG9pUOLj|d$A-=8JGS)nmU?Ph0|C!+Z_w{4_XoZ8fhw=h*W_<*KDi_BMEw83 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

`XvS zU@2;4Hed+-o7(0KUl6Dc4q3lM-FO)_5Hrv@1L4?#q6<~u8#SO&sE#LCXJ97f`%x>n z12upK)LHrrgXrI!Q3iiT?UmOcr{f^h7e)uv7fl@M!5nJ=YR1D+0~n3k$~#b7QiW=7 z3F>gKvDa%*&+SIHI)00c8g4|*>^N%X7f}sfLk*;Dp;PXJnn^aQqrs>xxC3>{OHt2P zqdHoMopBMy;$~F8?-#QE+S{X4sDYrt&I4hna*Qo^Lp7L!+M=GQ6&Z$_`2_0})Ql@p z17Coe*b3A@o<@B^)u6sF_6}zKN0Ir=-q3xBGqWtz2n$gik3ls&5!K;T)J&>S|Ik>C z&4(0u!_0L|#=INY7MzBya1ZJ%yp8(4IOZm!5ni?x9z&gxbw+j67uE3%s68Bw>3Apl z;xgn*)2u<=cLd|`6l$fshdK2TsKeRSnuD64dzii9Hd|3_%a!QC4GV19jXfwYM$L3D zs)1k76Mcp|Uo3v8nFd-zQSC&bwk*b$FOg5u`_Hd!^AdlCN}aj;A&k~jq;p`1hI#xA+*;Xwu6P_pCo!vP9jEEAp`EGBr%%y-1U z2`?gw_y^I;K19}BCw?NnA)X-S5)+7j5pB7z4!!OD`Uy@Ul=Ql$QGW(+Cc2UjC)9s) z+Q6sYWu-p0fj`J6*nIN^J~D~*gb(%IZRJ3F&vUjMO1U@Djq+QzP8_oNHTXI)Mg6DP zhjr~;;w-U?7(yuN&?s@B%@+i3s(FTpJrU8{~f=liS%zy5yJ>2PX|+tVKmT}P|~~0KWfa2Dv;iBFrDo6zLb9^<`8R%yNEtS3Gq0g zw8Oz<@XS=3cdsP#h%H3p_e6nh^d<7?#3({(65%46h&b*!jK34#5>>?gL_P60B8ux* z@d)uL5k$14tz_;YdT9UeC9{P%N+@+Dz9jxjC~bByvoM`TSKvJ2VO!syx?9Ny5Wf=L zD8Fp4weY;nd~A)x0o->|`+vYzeu#NguEt-81j3)_K%G)Dv4jY*<$idPawkHmfXJcl zFF2q0jZpF?-c*L<%k{rD=V)8)X#YEsS%5LbYlKo6v5JV{+9upj1QS_=(iI|A4cOGd zs`g@uABke3l28gG&Jl4c*mMou?P#PInN&hQFn+et)8v&NbTGGDKf(*ddqe>DPR8Rz z4v|m!1FC6mSp^?Zs^30V2Ns z)~GW9_5I_=`qghqJLVBMqP%R@tkTLc#g(O{Ggq$7=sqGVBdbShW@c(;wkxw&Zbn9O z1}WgiqN>@cV=IehR+SgcuBgm)O)V-fFP&O3vtkZqSKbsZr4|=eR#p^DtC&5bsH{A# pw5r}C^UlEbgDPg0&Mn(lKhs4=C1oW=uA=&d`Ir6cR}D?^{6B|7!czbM diff --git a/ks_includes/locales/es/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/es/LC_MESSAGES/KlipperScreen.po index 7a04117ba..23a652e94 100644 --- a/ks_includes/locales/es/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/es/LC_MESSAGES/KlipperScreen.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-26 12:31-0300\n" -"PO-Revision-Date: 2024-11-13 17:00+0000\n" -"Last-Translator: gallegonovato \n" +"PO-Revision-Date: 2024-12-02 18:00+0000\n" +"Last-Translator: Radiotbo \n" "Language-Team: Spanish \n" "Language: es\n" @@ -504,10 +504,10 @@ msgid "Loading..." msgstr "Cargando..." msgid "Lock" -msgstr "" +msgstr "Bloquear" msgid "Lost Connection to Moonraker" -msgstr "Conexión perdida a Moonraker" +msgstr "Conexión perdida con Moonraker" msgid "Lower Nozzle" msgstr "Bajar Boquilla" @@ -919,10 +919,10 @@ msgid "Unload" msgstr "Descargar" msgid "Unlock" -msgstr "" +msgstr "Desbloquear" msgid "Unlock failed" -msgstr "" +msgstr "Desbloqueo fallido" msgid "Unretract Extra Length" msgstr "Distancia extra al desretraer" diff --git a/ks_includes/locales/hu/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/hu/LC_MESSAGES/KlipperScreen.mo index b4628d1183ff4b5c13562b8dcb0f72fe8c5e3e90..fd7455912ec14d48100832821aa6de8337906a80 100644 GIT binary patch delta 7243 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 Y{+eo6b=ky{s;MRAB^7nQ<@Ip?AHUw>9RL6T delta 7112 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\n" "Language-Team: Hungarian \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.8-rc\n" +"X-Generator: Weblate 5.9-dev\n" #, python-format msgid "%s will be updated to version" @@ -497,7 +497,7 @@ msgid "Loading..." msgstr "Betöltés..." msgid "Lock" -msgstr "" +msgstr "Zár" msgid "Lost Connection to Moonraker" msgstr "Megszakadt a kapcsolat a Moonraker-el" @@ -911,10 +911,10 @@ msgid "Unload" msgstr "Kiadás" msgid "Unlock" -msgstr "" +msgstr "Felold" msgid "Unlock failed" -msgstr "" +msgstr "Feloldás sikertelen" msgid "Unretract Extra Length" msgstr "Extra visszahúzás hossza" diff --git a/ks_includes/locales/it/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/it/LC_MESSAGES/KlipperScreen.mo index c1231fd436ea32150fe2135bffe10b7e77512bb2..0c3e88ec780b1ec9b80b2d42178173930fe77a01 100644 GIT binary patch delta 7224 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 N(XGL?JqL&Q{|{8jw+{dS diff --git a/ks_includes/locales/it/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/it/LC_MESSAGES/KlipperScreen.po index d33b95d4f..ed21dab20 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-11-26 12:31-0300\n" -"PO-Revision-Date: 2024-11-13 17:00+0000\n" +"PO-Revision-Date: 2024-11-30 20:00+0000\n" "Last-Translator: Giadej \n" "Language-Team: Italian \n" @@ -499,7 +499,7 @@ msgid "Loading..." msgstr "Caricamento..." msgid "Lock" -msgstr "" +msgstr "Blocca" msgid "Lost Connection to Moonraker" msgstr "Connessione persa con Moonraker" @@ -911,10 +911,10 @@ msgid "Unload" msgstr "Scarica" msgid "Unlock" -msgstr "" +msgstr "Sblocca" msgid "Unlock failed" -msgstr "" +msgstr "Sblocco fallito" msgid "Unretract Extra Length" msgstr "Lunghezza Extra De-Retrazione" diff --git a/ks_includes/locales/lt/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/lt/LC_MESSAGES/KlipperScreen.mo index a7643c3a3e97fe21b42b4436521dc94eb5dbca71..27b7b9fa10b754dc036650549152c1683858786b 100644 GIT binary patch delta 7236 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 Dwt3`| delta 7086 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 wjGi=g!suy}r*w{;KE8a)gQH^$rgy8Uq)(Vu6_j\n" "Language-Team: Lithuanian \n" @@ -16,8 +16,8 @@ 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" +"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 @@ -505,7 +505,7 @@ msgid "Loading..." msgstr "Užkraunama..." msgid "Lock" -msgstr "" +msgstr "Užrakinti" msgid "Lost Connection to Moonraker" msgstr "Prarastas ryšys su Moonraker" @@ -919,10 +919,10 @@ msgid "Unload" msgstr "Iškrauti" msgid "Unlock" -msgstr "" +msgstr "Atrakinti" msgid "Unlock failed" -msgstr "" +msgstr "Atrakinti nepavyko" msgid "Unretract Extra Length" msgstr "Papildomas plastiko padavimo ilgis" diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo index c235bc16baf5cf8d5793028531676bc275e373b1..dcbd951c3fde480d8b074930d9293d70fb20fa92 100644 GIT binary patch delta 7183 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 Tg-Xvpp1-HZ<;b!w54HO*tz$A0 delta 7004 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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 1a0dcf4cf..4051f53d7 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-11-26 12:31-0300\n" -"PO-Revision-Date: 2024-11-13 17:00+0000\n" -"Last-Translator: Владимир Чернояров \n" +"PO-Revision-Date: 2024-12-02 18:00+0000\n" +"Last-Translator: Eugen Fleischhauer \n" "Language-Team: Russian \n" "Language: ru\n" @@ -141,7 +141,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 "Изменить расчет оставшегося времени" @@ -196,7 +196,7 @@ msgid "Current" msgstr "Текущий" msgid "Current percentage and graph line" -msgstr "" +msgstr "Текущий процент и линия графика" msgid "DPMS has failed to load and has been disabled" msgstr "DPMS не загрузилась и была отключена" @@ -1018,7 +1018,7 @@ msgid "mm³/s" msgstr "мм³/с" msgid "s" -msgstr "" +msgstr "с" msgid "second" msgid_plural "seconds" diff --git a/ks_includes/locales/stats/cs.json b/ks_includes/locales/stats/cs.json new file mode 100644 index 000000000..f8c0b9006 --- /dev/null +++ b/ks_includes/locales/stats/cs.json @@ -0,0 +1,5 @@ +{ + "language_name": "Czech", + "translated_percent": "100.0", + "filename": "ks_includes/locales/cs/LC_MESSAGES/KlipperScreen.po", +} \ No newline at end of file diff --git a/ks_includes/locales/stats/es.json b/ks_includes/locales/stats/es.json new file mode 100644 index 000000000..4aa4ed4d1 --- /dev/null +++ b/ks_includes/locales/stats/es.json @@ -0,0 +1,5 @@ +{ + "language_name": "Spanish", + "translated_percent": "100.0", + "filename": "ks_includes/locales/es/LC_MESSAGES/KlipperScreen.po", +} \ No newline at end of file diff --git a/ks_includes/locales/stats/hu.json b/ks_includes/locales/stats/hu.json new file mode 100644 index 000000000..67dc3d0e2 --- /dev/null +++ b/ks_includes/locales/stats/hu.json @@ -0,0 +1,5 @@ +{ + "language_name": "Hungarian", + "translated_percent": "100.0", + "filename": "ks_includes/locales/hu/LC_MESSAGES/KlipperScreen.po", +} \ No newline at end of file diff --git a/ks_includes/locales/stats/it.json b/ks_includes/locales/stats/it.json new file mode 100644 index 000000000..058bfdce6 --- /dev/null +++ b/ks_includes/locales/stats/it.json @@ -0,0 +1,5 @@ +{ + "language_name": "Italian", + "translated_percent": "100.0", + "filename": "ks_includes/locales/it/LC_MESSAGES/KlipperScreen.po", +} \ No newline at end of file diff --git a/ks_includes/locales/stats/lt.json b/ks_includes/locales/stats/lt.json new file mode 100644 index 000000000..cfe9d64b5 --- /dev/null +++ b/ks_includes/locales/stats/lt.json @@ -0,0 +1,5 @@ +{ + "language_name": "Lithuanian", + "translated_percent": "100.0", + "filename": "ks_includes/locales/lt/LC_MESSAGES/KlipperScreen.po", +} \ No newline at end of file diff --git a/ks_includes/locales/stats/ru.json b/ks_includes/locales/stats/ru.json new file mode 100644 index 000000000..b1987ba80 --- /dev/null +++ b/ks_includes/locales/stats/ru.json @@ -0,0 +1,5 @@ +{ + "language_name": "Russian", + "translated_percent": "97.5", + "filename": "ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po", +} \ No newline at end of file diff --git a/ks_includes/locales/stats/tr.json b/ks_includes/locales/stats/tr.json new file mode 100644 index 000000000..a0e217f5b --- /dev/null +++ b/ks_includes/locales/stats/tr.json @@ -0,0 +1,5 @@ +{ + "language_name": "Turkish", + "translated_percent": "100.0", + "filename": "ks_includes/locales/tr/LC_MESSAGES/KlipperScreen.po", +} \ No newline at end of file diff --git a/ks_includes/locales/stats/zh_CN.json b/ks_includes/locales/stats/zh_CN.json new file mode 100644 index 000000000..b623b7f0f --- /dev/null +++ b/ks_includes/locales/stats/zh_CN.json @@ -0,0 +1,5 @@ +{ + "language_name": "Chinese (Simplified Han script)", + "translated_percent": "100.0", + "filename": "ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.po", +} \ No newline at end of file diff --git a/ks_includes/locales/stats/zh_TW.json b/ks_includes/locales/stats/zh_TW.json new file mode 100644 index 000000000..ac3c9ae51 --- /dev/null +++ b/ks_includes/locales/stats/zh_TW.json @@ -0,0 +1,5 @@ +{ + "language_name": "Chinese (Traditional Han script)", + "translated_percent": "100.0", + "filename": "ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.po", +} \ No newline at end of file diff --git a/ks_includes/locales/tr/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/tr/LC_MESSAGES/KlipperScreen.mo index adeb433ec45122f64794f861b8a83b26cbc41c25..d4f02833a79a162da28eb2545e1afcbd494b9b58 100644 GIT binary patch delta 7244 zcmZA43w%%YAII^t+08Cy8#8S48=GxrGv+c2Gd2y|T$f0+7?xpXrBynie=SO(QAtGT zqFhE&DY@j7nzvuV+J?DHcpYJ)p-^^a*QN7s1 zJ{js&ZE^JRu&hYT^S7)mlpkuOR?E7*xn)J+aIBBhF%V~B9L~cq+=Sk^7lZIq^uez% z0MB4O`~`L0MQmYNwsnny258FYe%J-uVNYy}WtfCZF#-3P`fr#_J(`;}kv#Oma%_Op zF#;dMX1EMBk#|uG`565e-#SD=Hy$@9P9jOL&Y^C&h+4@_WK7E^+NrlfWugtL!!D@% zvXC`ddB_T_38;lsp)YR65Zs2bjBg#Jpp;xPUPu19?^Z@y&`UTbpa#lB4b&GK;!sqF z#i#+Mqwcd&yI5t~mtqX{RjADEL0c=oOhGHWj_Sz6<*Y0Wl}Z<~c&i<1;C$2`-;VJ( z4wd40sDWQY-M107kdIIc{05bov#9GmW5~Y>QA|szO-FTDi0WVlHpVB>7gw0}*HK%u z)wJ(MWv14&A2Xgo4fqQx69Fxqg}6`;V~>`$Gvi(~Xhr=o7>A=KP=f0CepIGrp;q!Z zDq~Nfo`Gjk6MEUSzlqwKO{nX4qxv~uJc?=5PuUdIQCKUdgJ!6DYYfF?)XIArb5Ro+ zh{{Z%sZT_uz6^DLCF;IMOufqZH0u6E=zd0)Q1GPT71Z9Y!6vv7c^s_$s1=?!?N?AM z366CJXo^~C4C;HJ1M0p$r~$?qrx@?Y9<#fEq3&Cc8h9IOYj&ue@vZ$7)WI?1Y4oA~qwzP? zjn`0_xPcldEZ#8^)gFhsF2k6KdWN!1eHi*uABlR+$D*wp?=uZ^Q7K%CTER+Gs@ItF z@1dTJT8zc-QJL{ia9*o;)QWRZUs$)Hwqg=$Yac}2KNt0OtxO>QsT4NS;D=|77t95h zQ4{h?bTZ

L3KQ(nQq#DX7g!)36 zgj(Tj)CKcV9j-tPw8psJv~NXC>;u%+9KrxRha}6ogt{-ft(1Of6jF7i8=D zEb4)n@3dPZjCZ51zX$b9O*QRRsD(U(n)f2q0@q?TZb#kco$O>f5cLc;N9|A&`eRx$ z&!8sIg9d%S^uu;of~oktsqaTE=sI@A*c4}gQK+pfMopx`w9hfl#~|9DLoHx6Y9iZE z6R1t$8PrU_ph1~Bg>iTemH7tDrXz--W}b_BYX@R57NZt$FDe5wu>n@2`h5lU?7d;y zH>1Ycg&tUIQ_xHfB3ZM(ME+U6EMFaULH$JZK~1PHs^bD*CX#U)40! zLdIifd=`7+0Zhk0(n)fy9ApBvRY5@m&cjBy81;9Qq&@;Q@dVVw zJD@Vq9ktRt)Wq*ZemAYLsOzgx{Vl*C{RXX~5KKc2>MyOGNcODL$UiHTW$0YGp*If+`xdDH}bx;P66!A8`hF;c%lX%sZmfv8LjL#^a4(>?`V z)bB%OWHD+&dr&_WwWt9Pqn`G!u?7B!WZeoN@A{g^M4camnK&A4t#}y)tz?_IU^lj= z{u%0_yN-H2Z=xQWXx>4Yj>^a`q>TCt7F)NIs1Pol1S8Fk-A)L!pJW$FlOB3~F!p~gL%LH@Nj zm(7LNEzV!ZKB$bupe{^A%{(2uVGb%Yvrx~@Ym2O8(Gf*q&gStK+^}SGpO8Ho9j^!AM^H39c1DoP@)PlZ54g4)C zWA+6Ky6{ib(;eE~>9CWrw{Z~mZxCX%FHsXVFaq)29=>(P#yM04KxfR@GjJK zm8gE^pdRiQP!nB;yl~e0sD)hZP5w2*&}?UBF{ld@P#tta4Ul8b7oeVrLR1H1P}j{s zUH23!<%>`mT#m}g{X(^B~+$1qXyb$>IaR-Fp_rr6os}F{y?oHv5!;lir&=68B0+sD@SGMA=Ct) zKy|bLwc>T?gYOx4p!(T|%D_QX#=k`-Xj{Kh(B54`eL;lY%D!R>`d~Tg;jBarJRg1W zCDdN8MrCFTw!t07pD=}bL@uu!-irKwS#z)eccQP}|Iofp3Y(!Okcxhohw8Wx-4B;J zUx`{tHTvSKSRdD;R`xFHA=`(_h<88dXFCM->|~+(8-NY<{!gHw8!J&OtwL?Za?}9p zQ3Jk%O7#I$CeEP;UN-eBm`vTPzw^F#KxOC-^u$v1!YQcCR-moIgA~-!EYuB;nmWb* z9#LFyC$)H@hWM7)MSMYMl7Bzia;>&d$3Tbw`ShoDo(Sfz+=c5m%h_y!R{`PVlO`U(v;Qh|u9je^oe? zm_x)-?~Xe3{ZOBJt?jNlA5CaDNbz-|7v<;iKh7!l=UsdrCTv&rqln22uq9buTq3;hJ_K%L%Hk?9ua`A5bj_5)Bi@1fhZ0u?}O{A=2GI5#c zPWwnaM${cmY5Rdn7_O*m#7a}v-;5m2`gc%TLu?{k#7aU(5^5I&5f2c}IoA$fArdGr!2+T^QFnw>=*_v7#An+7G;=111|27e)~2j_ zSAG27@f!6ZrtL|5koexz#Rj6W>7$hLQKF}*x5H@a?-Cv!H9pP1^Y|!FS2V36d1!gj~U3`8lp`Ir&+A z^Ll1wXAjO9GNfins*i_9*P0dWI|ljoFDWglV9=vILj7B*GPcB(wR4T-Zg&;!Tr;W2 Yb$8M3Wkuz?HcZ>K;end7xlx{f0h^fOoB#j- delta 7110 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 diff --git a/ks_includes/locales/tr/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/tr/LC_MESSAGES/KlipperScreen.po index 1699d7f98..43c3df1d0 100644 --- a/ks_includes/locales/tr/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/tr/LC_MESSAGES/KlipperScreen.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-26 12:31-0300\n" -"PO-Revision-Date: 2024-10-11 06:01+0000\n" +"PO-Revision-Date: 2024-11-28 16:42+0000\n" "Last-Translator: Selim \n" "Language-Team: Turkish \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" @@ -501,7 +501,7 @@ msgid "Loading..." msgstr "Yükleniyor..." msgid "Lock" -msgstr "" +msgstr "Kilitle" msgid "Lost Connection to Moonraker" msgstr "Moonraker ile Bağlantı Koptu" @@ -913,10 +913,10 @@ msgid "Unload" msgstr "Çıkart" msgid "Unlock" -msgstr "" +msgstr "Kilidi Aç" msgid "Unlock failed" -msgstr "" +msgstr "Kilit açma başarısız" msgid "Unretract Extra Length" msgstr "İleri İtme Ekstra Uzunluk" diff --git a/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.mo index 548875da1cf2a76f731e2c3f7191609b3b0b3204..7314feba6b0bcd6ba6d042551d3998a93f74f593 100644 GIT binary patch delta 7216 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 diff --git a/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.po index c02a1e614..7c46c06a5 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-11-26 12:31-0300\n" -"PO-Revision-Date: 2024-10-29 18:12+0000\n" -"Last-Translator: Will Zhai \n" +"PO-Revision-Date: 2024-11-27 21:00+0000\n" +"Last-Translator: Sun Zheng <123456789sunzheng@gmail.com>\n" "Language-Team: Chinese (Simplified Han script) \n" "Language: zh_CN\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" @@ -501,7 +501,7 @@ msgid "Loading..." msgstr "加载中..." msgid "Lock" -msgstr "" +msgstr "锁定" msgid "Lost Connection to Moonraker" msgstr "与 Moonraker 失去连接" @@ -912,10 +912,10 @@ msgid "Unload" msgstr "卸载耗材" msgid "Unlock" -msgstr "" +msgstr "解锁" msgid "Unlock failed" -msgstr "" +msgstr "解锁失败" msgid "Unretract Extra Length" msgstr "回料长度" diff --git a/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/zh_TW/LC_MESSAGES/KlipperScreen.mo index cd9a51d700bf6890a79d6aaea28fe5ac376879bc..426c05a43aecd97485812e4d601e0c7e929076a0 100644 GIT binary patch delta 7202 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 a`cuBegR0h~M}}1G%)KG7>U7~}KK}z~f3\n" +"PO-Revision-Date: 2024-11-27 21:00+0000\n" +"Last-Translator: Sun Zheng <123456789sunzheng@gmail.com>\n" "Language-Team: Chinese (Traditional Han script) \n" "Language: zh_TW\n" @@ -501,7 +501,7 @@ msgid "Loading..." msgstr "裝載中..." msgid "Lock" -msgstr "" +msgstr "鎖定" msgid "Lost Connection to Moonraker" msgstr "與Moonraker失去連接" @@ -912,10 +912,10 @@ msgid "Unload" msgstr "解除安裝" msgid "Unlock" -msgstr "" +msgstr "解鎖" msgid "Unlock failed" -msgstr "" +msgstr "解鎖失敗" msgid "Unretract Extra Length" msgstr "回料長度" From 1513570be78f57e41d03192a473bbed139f4c0dd Mon Sep 17 00:00:00 2001 From: Andrii <40995038+komandrik@users.noreply.github.com> Date: Fri, 6 Dec 2024 23:26:21 +0200 Subject: [PATCH 077/127] chore(locales): Ukrainian localization update (#1516) Ukrainian localization update --- .../locales/uk/LC_MESSAGES/KlipperScreen.mo | Bin 24037 -> 27774 bytes .../locales/uk/LC_MESSAGES/KlipperScreen.po | 298 +++++++++--------- 2 files changed, 153 insertions(+), 145 deletions(-) diff --git a/ks_includes/locales/uk/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/uk/LC_MESSAGES/KlipperScreen.mo index 4590aaaf7d9d665060129203bfcafa1ec3545fff..24f634f4bdeecc754a708d4abb506402fe1e9c76 100644 GIT binary patch delta 11456 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 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Poedit 3.4.1\n" +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"X-Generator: Poedit 3.5\n" #, python-format msgid "%s will be updated to version" @@ -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,7 +189,7 @@ msgid "Cooldown" msgstr "Охолодження" msgid "Couldn't add network" -msgstr "Неможливо додати мережу" +msgstr "Не вдалося додати мережу" msgid "Current" msgstr "Поточний" @@ -219,14 +219,14 @@ msgid "Disable for 12hs with am / pm" msgstr "Вимкнути на 12 годин за допомогою am / pm" msgid "Disconnect" -msgstr "Від'єднатись" +msgstr "Відключати" msgid "Distance (mm)" msgstr "Відстань (мм)" #, python-format msgid "Do you want to forget or disconnect %s?" -msgstr "Забути або від'єднатись від %s?" +msgstr "Ви хочете забути чи відключити %s?" #, python-format msgid "Do you want to recover %s?" @@ -260,7 +260,7 @@ msgid "Error: Couldn't get a position to probe" msgstr "Помилка: не вдалося отримати позицію для проби" msgid "Estimated Time" -msgstr "Розрахований час" +msgstr "Розрахунковий Час" msgid "Estimated Time Method" msgstr "Метод розрахунку часу" @@ -275,19 +275,21 @@ msgid "Extra Large" msgstr "Дуже Великий" msgid "Extrude" -msgstr "Видавити" +msgstr "" +"Заміна пластику\n" +"Продавлювити" msgid "Extruders" msgstr "Екструдери" msgid "Extrusion +" -msgstr "Видавити +" +msgstr "Екструзія +" msgid "Extrusion -" -msgstr "Втягнути -" +msgstr "Екструзія -" msgid "Failed to delete connection" -msgstr "Не вдалося видалити з'єднання" +msgstr "Не вдалося видалити з’єднання" msgid "Failed to initialize" msgstr "Не вдалося ініціалізувати" @@ -299,7 +301,7 @@ msgid "Fan" msgstr "Вентилятор" msgid "Filament" -msgstr "Пруток" +msgstr "Профиль прутка" msgid "Filament Used" msgstr "Використання Прутка" @@ -350,13 +352,15 @@ msgid "Forget" msgstr "Забути" msgid "Full Update" -msgstr "Повне оновлення" +msgstr "" +"Повне\n" +"Оновлення" msgid "Gcodes" -msgstr "G-коди" +msgstr "G-код" msgid "Getting IP address" -msgstr "Отримання IP адреси" +msgstr "Отримання IP-адреси" msgid "Go Back" msgstr "Назад" @@ -371,7 +375,7 @@ msgid "Hide sensors in Temp." msgstr "Сховати датчик t°." msgid "Home" -msgstr "Домашня сторінка" +msgstr "Дім" msgid "Home All" msgstr "Дім Всі" @@ -398,7 +402,7 @@ msgid "ID" msgstr "ID" msgid "Icon Theme" -msgstr "Тема оформлення" +msgstr "Іконка тема" msgid "Initializing printer..." msgstr "Ініціалізація принтера..." @@ -410,7 +414,7 @@ msgid "Input Shaper" msgstr "Input Shaper" msgid "Insufficient privileges" -msgstr "Недостатні привілеї" +msgstr "Недостатньо прав" msgid "Interface" msgstr "Інтерфейс" @@ -443,10 +447,12 @@ msgid "It's possible that the configuration is not correct" msgstr "Можливо, конфігурація неправильна" msgid "Job Status" -msgstr "Стан завдання" +msgstr "Статус роботи" msgid "Klipper Restart" -msgstr "Перезапуск Klipper" +msgstr "" +"Перезапуск\n" +"Klipper" msgid "Klipper has disconnected" msgstr "Klipper загубив зв'язок" @@ -466,8 +472,8 @@ msgstr "Klipper перезавантажиться" msgid "" "LOAD_FILAMENT/UNLOAD_FILAMENT are hidden and should be used from extrude" msgstr "" -"LOAD_FILAMENT/UNLOAD_FILAMENT приховані, і їх слід використовувати з меню " -"Заміна пластику" +"LOAD_FILAMENT/UNLOAD_FILAMENT приховані, і їх слід використовувати під час " +"видавлювання" msgid "Language" msgstr "Мова" @@ -476,7 +482,7 @@ msgid "Large" msgstr "Великий" msgid "Last Duration" -msgstr "Остання тривалість" +msgstr "Остання Тривалість" msgid "Last Used" msgstr "Останнє Використання" @@ -488,7 +494,7 @@ msgid "Layer:" msgstr "Шар:" msgid "Leds" -msgstr "Освітлення" +msgstr "Світлодіоди" msgid "Left:" msgstr "Залишилось:" @@ -503,7 +509,7 @@ msgid "Loading..." msgstr "Завантаження..." msgid "Lock" -msgstr "" +msgstr "Заблоковано" msgid "Lost Connection to Moonraker" msgstr "Втрачено з’єднання з Moonraker" @@ -584,13 +590,13 @@ msgid "Network" msgstr "Мережа" msgid "Network connected" -msgstr "Під'єднано до мережі" +msgstr "Підключено до мережі" msgid "Network disconnected" -msgstr "Від'єднано від мережі" +msgstr "Мережа відключена" msgid "Network not found" -msgstr "Мережу не знайдено" +msgstr "Мережа не знайдена" msgid "Never" msgstr "Ніколи" @@ -605,7 +611,7 @@ msgid "No info available" msgstr "Немає інформації" msgid "No mesh has been loaded" -msgstr "Не завантажено жодної сітки" +msgstr "Жодна сітка не завантажена" msgid "No wireless interface has been found" msgstr "Бездротовий інтерфейс не знайдено" @@ -626,10 +632,10 @@ msgid "Notifications" msgstr "Сповіщення" msgid "Nozzle diameter" -msgstr "Діаметр сопла" +msgstr "Диаметр сопла" msgid "Only for the move panel" -msgstr "Лише для панелі переміщення" +msgstr "Тільки для панелі переміщення" #, python-format msgid "Outdated by %d" @@ -660,13 +666,15 @@ msgid "Perform a full upgrade?" msgstr "Виконати повне оновлення?" msgid "Pins" -msgstr "Піни" +msgstr "" +"Керування\n" +"контактами" msgid "Please recompile and flash the micro-controller." msgstr "Будь ласка, перекомпілюйте та перепрошійте мікроконтролер." msgid "Please wait" -msgstr "Очікуйте, будь ласка" +msgstr "Будь ласка, зачекайте" msgid "Power" msgstr "Живлення" @@ -675,10 +683,10 @@ msgid "Power On Printer" msgstr "Увімкнути принтер" msgid "Pressure Advance" -msgstr "Випередження тиску" +msgstr "Випередження Тиску" msgid "Pressure Advance:" -msgstr "Випередження тиску:" +msgstr "Випередження Тиску:" msgid "Pressure advance" msgstr "Випередження тиску" @@ -732,7 +740,7 @@ msgid "Refresh" msgstr "Оновити" msgid "Remove network" -msgstr "Вийняти мережу" +msgstr "Видалити мережу" msgid "Rename/Move:" msgstr "Перейменувати/перемістити:" @@ -866,8 +874,8 @@ msgstr "Початок оновлення для" msgid "Swaps buttons if they are on top of each other, affects other panels" msgstr "" -"Міняти місцями кнопки, якщо вони розташовані одна поверх іншої. Впливає на " -"решту панелей" +"Міняти місцями кнопки, якщо вони розташовані одна поверх іншої. \n" +"Впливає нарешту панелей" msgid "System" msgstr "Системна" @@ -918,10 +926,10 @@ msgid "Unload" msgstr "Вийняти" msgid "Unlock" -msgstr "" +msgstr "Розблокувати" msgid "Unlock failed" -msgstr "" +msgstr "Помилка розблокування" msgid "Unretract Extra Length" msgstr "Додаткова довжина втягування" @@ -933,7 +941,7 @@ msgid "Up To Date" msgstr "Актуально" msgid "Update" -msgstr "Оновити" +msgstr "Оновлення" msgid "Updating" msgstr "Оновлення" @@ -1014,7 +1022,7 @@ msgid "mm/s²" msgstr "мм/с²" msgid "mm³/s" -msgstr "мм/с³" +msgstr "мм³/с" msgid "s" msgstr "с" @@ -1025,151 +1033,151 @@ msgstr[0] "секунда" msgstr[1] "секунди" msgstr[2] "секунд" -#~ msgid "Hide temp." -#~ msgstr "Приховати темп." +msgid "Hide temp." +msgstr "Приховати темп." -#~ msgid "PSK for" -#~ msgstr "PSK для" +msgid "PSK for" +msgstr "PSK для" -#~ msgid "Are you sure you want to stop the calibration?" -#~ msgstr "Ви впевнені, що хочете припинити калібрування?" +msgid "Are you sure you want to stop the calibration?" +msgstr "Ви впевнені, що хочете припинити калібрування?" -#~ msgid "Mesh calibrate" -#~ msgstr "Калібрування сітки столу" +msgid "Mesh calibrate" +msgstr "Калібрування сітки столу" -#~ msgid "Uploaded" -#~ msgstr "Завантажено" +msgid "Uploaded" +msgstr "Завантажено" -#~ msgid "Ended official support in June 2023" -#~ msgstr "Офіційна підтримка припинена в червні 2023 року" +msgid "Ended official support in June 2023" +msgstr "Офіційна підтримка припинена в червні 2023 року" -#~ msgid "Hidden" -#~ msgstr "Прихований" +msgid "Hidden" +msgstr "Прихований" -#~ msgid "KlipperScreen will drop support in June 2024" -#~ msgstr "KlipperScreen припинить підтримку в червні 2024 року" +msgid "KlipperScreen will drop support in June 2024" +msgstr "KlipperScreen припинить підтримку в червні 2024 року" -#~ msgid "Print Time" -#~ msgstr "Час друку" +msgid "Print Time" +msgstr "Час друку" -#~ msgid "Starting WiFi Association" -#~ msgstr "Запуск асоціації WiFi" +msgid "Starting WiFi Association" +msgstr "Запуск асоціації WiFi" -#~ msgid "Warning" -#~ msgstr "Попередження" +msgid "Warning" +msgstr "Попередження" -#~ msgid "dBm" -#~ msgstr "dBm" +msgid "dBm" +msgstr "dBm" -#~ msgid "Deselect" -#~ msgstr "Скасувати вибір" +msgid "Deselect" +msgstr "Скасувати вибір" -#~ msgid "Select" -#~ msgstr "Вибрати" +msgid "Select" +msgstr "Вибрати" -#~ msgid "Bed screw configuration:" -#~ msgstr "Конфігурація гвинтів ліжка:" +msgid "Bed screw configuration:" +msgstr "Конфігурація гвинтів ліжка:" -#~ msgid "" -#~ "Not supported for auto-detection, it needs to be configured in " -#~ "klipperscreen.conf" -#~ msgstr "" -#~ "Автоматичне визначення не підтримується, його потрібно налаштувати у " -#~ "klipperscreen.conf" +msgid "" +"Not supported for auto-detection, it needs to be configured in klipperscreen." +"conf" +msgstr "" +"Автоматичне визначення не підтримується, його потрібно налаштувати у " +"klipperscreen.conf" -#~ msgid "Unknown screw position" -#~ msgstr "Невідоме положення гвинта" +msgid "Unknown screw position" +msgstr "Невідоме положення гвинта" -#~ msgid "Max Acceleration to Deceleration" -#~ msgstr "Макс. прискорення до гальмування" +msgid "Max Acceleration to Deceleration" +msgstr "Макс. прискорення до гальмування" -#~ msgid "Continue" -#~ msgstr "Продовжити" +msgid "Continue" +msgstr "Продовжити" -#~ msgid "Fullscreen" -#~ msgstr "Повноекранний режим" +msgid "Fullscreen" +msgstr "Повноекранний режим" -#~ msgid "Actions" -#~ msgstr "Дії" +msgid "Actions" +msgstr "Дії" -#~ msgid "Configuration" -#~ msgstr "Конфігурація" +msgid "Configuration" +msgstr "Конфігурація" -#~ msgid "Homing" -#~ msgstr "До дому" +msgid "Homing" +msgstr "До дому" -#~ msgid "Disable XY" -#~ msgstr "Вимкнути XY" +msgid "Disable XY" +msgstr "Вимкнути XY" -#~ msgid "Slicer Time correction (%)" -#~ msgstr "Виправлення часу слайсера (%)" +msgid "Slicer Time correction (%)" +msgstr "Виправлення часу слайсера (%)" -#~ msgid "Calibrated, save configuration to make it permanent" -#~ msgstr "Відкалібровано, збережіть конфігурацію, щоб зробити її постійною" +msgid "Calibrated, save configuration to make it permanent" +msgstr "Відкалібровано, збережіть конфігурацію, щоб зробити її постійною" -#~ msgid "Decrease" -#~ msgstr "Зменшити" +msgid "Decrease" +msgstr "Зменшити" -#~ msgid "Increase" -#~ msgstr "Збільшити" +msgid "Increase" +msgstr "Збільшити" #, python-format -#~ msgid "Sending Power ON signal to: %s" -#~ msgstr "Надсилання сигналу увімкнення живлення на: %s" +msgid "Sending Power ON signal to: %s" +msgstr "Надсилання сигналу увімкнення живлення на: %s" -#~ msgid "Sort:" -#~ msgstr "Сортувати:" +msgid "Sort:" +msgstr "Сортувати:" -#~ msgid "Calibrating..." -#~ msgstr "Калібрування..." +msgid "Calibrating..." +msgstr "Калібрування..." -#~ msgid "Z+" -#~ msgstr "Бебістеп Z+" +msgid "Z+" +msgstr "Бебістеп Z+" -#~ msgid "Z-" -#~ msgstr "Бебістеп Z-" +msgid "Z-" +msgstr "Бебістеп Z-" -#~ msgid "X+" -#~ msgstr "X+" +msgid "X+" +msgstr "X+" -#~ msgid "X-" -#~ msgstr "X-" +msgid "X-" +msgstr "X-" -#~ msgid "Y+" -#~ msgstr "Y+" +msgid "Y+" +msgstr "Y+" -#~ msgid "Y-" -#~ msgstr "Y-" +msgid "Y-" +msgstr "Y-" #, python-format -#~ msgid "Retry #%s" -#~ msgstr "Повторіть #%s" +msgid "Retry #%s" +msgstr "Повторіть #%s" -#~ msgid "Add Printer" -#~ msgstr "Додати принтер" +msgid "Add Printer" +msgstr "Додати принтер" -#~ msgid "Initializing" -#~ msgstr "Ініціалізація" +msgid "Initializing" +msgstr "Ініціалізація" -#~ msgid "Off" -#~ msgstr "Вимк" +msgid "Off" +msgstr "Вимк" -#~ msgid "View Mesh" -#~ msgstr "Показати сітку" +msgid "View Mesh" +msgstr "Показати сітку" -#~ msgid "Machine" -#~ msgstr "Машина" +msgid "Machine" +msgstr "Машина" -#~ msgid "Sort by: " -#~ msgstr "Сортувати за: " +msgid "Sort by: " +msgstr "Сортувати за: " -#~ msgid "Auto Calibration" -#~ msgstr "Автоматичне калібрування" +msgid "Auto Calibration" +msgstr "Автоматичне калібрування" -#~ msgid "Manual Calibration" -#~ msgstr "Ручне калібрування" +msgid "Manual Calibration" +msgstr "Ручне калібрування" -#~ msgid "NOTE: Edit your printer.cfg to save manual calibration changes." -#~ msgstr "" -#~ "ПРИМІТКА. Відредагуйте файл printer.cfg, щоб зберегти зміни калібрування " -#~ "вручну." +msgid "NOTE: Edit your printer.cfg to save manual calibration changes." +msgstr "" +"ПРИМІТКА. Відредагуйте файл printer.cfg, щоб зберегти зміни калібрування " +"вручну." From 5df1fd9de3029cddd5f77f3de677a8f5dee19cf3 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Fri, 6 Dec 2024 18:51:42 -0300 Subject: [PATCH 078/127] docs: add calibration info for evdev closes #1517 --- docs/Troubleshooting/Touch_issues.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/Troubleshooting/Touch_issues.md b/docs/Troubleshooting/Touch_issues.md index 08bcbd4ff..33c1b6be6 100644 --- a/docs/Troubleshooting/Touch_issues.md +++ b/docs/Troubleshooting/Touch_issues.md @@ -203,6 +203,20 @@ sudo reboot As an alternative **if the above doesn't work**: + determine the touchscreen driver (usually libinput): + + ```bash + cat /var/log/Xorg.0.log + ``` + + ```bash title="example of /var/log/Xorg.0.log" + ... + (II) Using input driver 'libinput' for 'ADS7846 Touchscreen' + ... + ``` + + if it says `evdev` instead, then change `libinput` to `evdev` below, both in the filename and in the file + ```bash sudo nano /usr/share/X11/xorg.conf.d/40-libinput.conf ``` @@ -216,6 +230,11 @@ sudo reboot Option "TransformationMatrix" "0 -1 1 1 0 0 0 0 1" EndSection ``` + + !!! note + the number of the filename determines the order of loading, if you have issues + check if there are other files overriding your config or just use 99-touch_calibration.conf as a name. + Close the nano editor using `ctrl`+`x` (exit), then `y` for yes (save). ```sh sudo reboot From 23248af10cb2b6d58a9784973acf44fd0b2a8b9a Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Sun, 15 Dec 2024 19:15:06 +0100 Subject: [PATCH 079/127] chore(locales): Translations update from Hosted Weblate (#1521) * Translated using Weblate (Polish) Currently translated at 100.0% (325 of 325 strings) Co-authored-by: Julia Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/pl/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Turkish) Currently translated at 100.0% (325 of 325 strings) Co-authored-by: Selim Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/tr/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (German) Currently translated at 100.0% (325 of 325 strings) Co-authored-by: Exp3rt Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/de/ Translation: KlipperScreen/KlipperScreen --------- Co-authored-by: Julia Co-authored-by: Selim Co-authored-by: Exp3rt --- .../locales/de/LC_MESSAGES/KlipperScreen.mo | Bin 18960 -> 19494 bytes .../locales/de/LC_MESSAGES/KlipperScreen.po | 24 +++++++++--------- .../locales/pl/LC_MESSAGES/KlipperScreen.mo | Bin 19477 -> 19622 bytes .../locales/pl/LC_MESSAGES/KlipperScreen.po | 12 ++++----- ks_includes/locales/stats/de.json | 5 ++++ ks_includes/locales/stats/pl.json | 5 ++++ .../locales/tr/LC_MESSAGES/KlipperScreen.mo | Bin 19349 -> 19356 bytes .../locales/tr/LC_MESSAGES/KlipperScreen.po | 12 ++++----- 8 files changed, 34 insertions(+), 24 deletions(-) create mode 100644 ks_includes/locales/stats/de.json create mode 100644 ks_includes/locales/stats/pl.json diff --git a/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.mo index c794055a7c70431f53bd74f9898e0adc0e38aea3..f73e034487e7ca4019046810fffc01f1d1017a09 100644 GIT binary patch delta 7578 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 V@Aqi+-mapu(uYXx{TVwP{{!%NTSfo? delta 7074 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 diff --git a/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.po index f7be47492..5a38fc653 100644 --- a/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \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" +"PO-Revision-Date: 2024-12-15 14:02+0000\n" +"Last-Translator: Exp3rt \n" "Language-Team: German \n" "Language: de\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-rc\n" #, python-format msgid "%s will be updated to version" @@ -344,7 +344,7 @@ msgid "Font Size" msgstr "Schriftgröße" msgid "For mouse control or to verify touchscreen accuracy" -msgstr "" +msgstr "Für Maus Kontroller oder um Touchscreen Genauigkeit zu überprüfen" msgid "Forget" msgstr "Vergessen" @@ -422,7 +422,7 @@ msgid "Invalid password" msgstr "Ungültiges Passwort" msgid "Invalid temperature" -msgstr "" +msgstr "Ungültige Temperatur" msgid "Inversely affects the icon size" msgstr "Beeinflusst die Symbolgröße umgekehrt" @@ -503,7 +503,7 @@ msgid "Loading..." msgstr "Lädt..." msgid "Lock" -msgstr "" +msgstr "Sperren" msgid "Lost Connection to Moonraker" msgstr "Verbindung zu Moonraker verloren" @@ -644,7 +644,7 @@ msgid "Part Fan" msgstr "Bauteil Lüfter" msgid "Password" -msgstr "" +msgstr "Passwort" msgid "Password saved" msgstr "Passwort gespeichert" @@ -813,7 +813,7 @@ msgid "Show Scrollbars Buttons" msgstr "Zeige Scrollbar Schaltfläche" msgid "Show cursor" -msgstr "" +msgstr "Cursor anzeigen" msgid "Show only devices that are able to be set" msgstr "Zeige nur Geräte die eingestellt werden können" @@ -887,7 +887,7 @@ msgid "Temperature" msgstr "Temperatur" msgid "Temperature too low to extrude" -msgstr "" +msgstr "Temperatur zu niedrig zum extrudieren" msgid "The system doesn't meet the minimum requirement" msgstr "Das System erfüllt die minimalen Anforderungen nicht" @@ -917,10 +917,10 @@ msgid "Unload" msgstr "Entladen" msgid "Unlock" -msgstr "" +msgstr "Entsperren" msgid "Unlock failed" -msgstr "" +msgstr "Entsperren fehlgeschlagen" msgid "Unretract Extra Length" msgstr "Überlänge ausfahren" @@ -943,7 +943,7 @@ msgid "Useful for un-responsive touchscreens" msgstr "Nützlich für nicht reagierende Touchscreens" msgid "User" -msgstr "" +msgstr "Benutzer" msgid "WebRTC is not supported by the backend trying Stream" msgstr "WebRTC wird vom Backend nicht unterstützt" diff --git a/ks_includes/locales/pl/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/pl/LC_MESSAGES/KlipperScreen.mo index 79a2fcf6d358b55a2a8348e757a2365dbb78e914..4a281ba09435369d34d70166e249b54278c74a76 100644 GIT binary patch delta 7218 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\n" +"PO-Revision-Date: 2024-12-10 12:04+0000\n" +"Last-Translator: Julia \n" "Language-Team: Polish \n" "Language: pl\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 5.8-dev\n" +"X-Generator: Weblate 5.9-dev\n" #, python-format msgid "%s will be updated to version" @@ -500,7 +500,7 @@ msgid "Loading..." msgstr "Ładowanie..." msgid "Lock" -msgstr "" +msgstr "Zablokuj" msgid "Lost Connection to Moonraker" msgstr "Utracono połączenie z Moonraker" @@ -915,10 +915,10 @@ msgid "Unload" msgstr "Wyładuj" msgid "Unlock" -msgstr "" +msgstr "Odblokuj" msgid "Unlock failed" -msgstr "" +msgstr "Nie udało się odblokować" msgid "Unretract Extra Length" msgstr "Dodatkowa ilość dla powrotu" diff --git a/ks_includes/locales/stats/de.json b/ks_includes/locales/stats/de.json new file mode 100644 index 000000000..5945100ef --- /dev/null +++ b/ks_includes/locales/stats/de.json @@ -0,0 +1,5 @@ +{ + "language_name": "German", + "translated_percent": "100.0", + "filename": "ks_includes/locales/de/LC_MESSAGES/KlipperScreen.po", +} \ No newline at end of file diff --git a/ks_includes/locales/stats/pl.json b/ks_includes/locales/stats/pl.json new file mode 100644 index 000000000..f395cd07c --- /dev/null +++ b/ks_includes/locales/stats/pl.json @@ -0,0 +1,5 @@ +{ + "language_name": "Polish", + "translated_percent": "100.0", + "filename": "ks_includes/locales/pl/LC_MESSAGES/KlipperScreen.po", +} \ No newline at end of file diff --git a/ks_includes/locales/tr/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/tr/LC_MESSAGES/KlipperScreen.mo index d4f02833a79a162da28eb2545e1afcbd494b9b58..3aecc8b9a85252c9b7c20a88afbf87446558bb54 100644 GIT binary patch delta 2654 zcmXZd4@{L+7{~E*5$+Wfls_RixgrU9BM<_vgpuGs0yJ5vMa{7?k&;EI(B)w zc6ko1j&m}NF$smn#A5+Y$AuWgTJ+;qjK#Mx4!dwN_TUsegkC&q?Z+JYLs*R0QR8xo z*aPQdE;bgK$f>wYXEyE44Ahz(n1bCn6MHcqhcO9n<5Wxv88ZztP_gBsVk^Z2T#CwN z6)Lv%I0u_hAfJ3NY$B=)fMvlxw@Qe$SJ7j-SN zt>vgnJ%M@HhT7l=D#IU8iT#W!`ERHryp9UkiCW-hnt+-Zu-=Pz&@V-uWi4joQ>cu$ zqbk*g+9-k=_aSQDm#DKIMpfzzDv)2TmyilO<}VsLn_H-Xz6XrC6XQ`838Ido02O&T zmf;FiWp<$M&YP%px={grgbMH&D%0br^-p0Ip21l5H{&#tc`%t(H835uQPB27)*T@4V{VGOGA;3q9QwwD(MwerZ?^T z1g@+qkZKK}N}Of;d8nf*MyGMK_|pc`c}Uo#oVD8}8+SCLFLYK1bcwZ%~yO zL5(|S-;bd#*;P~pd=;+As5_B?S}zNA=DC=Pg{Y0IQJ3}63dddO86Ie27&Y+~)CSv8 z3v{6>wHH;H{irkTv;7g&{PWg}s12^50{;(#7_-RzK+Qu{rp}?E7cDpg_ncepsb+&(^HjZ2De#WyjWjRE1tc1^5=GV<#%(KJ?=E)68U>(cH&ALs-pfr z8vbgxgqf%>R0%4xRj7s6;>6{$?^{usbfM;dg0XlQmDzWwOE!Y4$kZD5&vqK>?o^@H zd#r}~D}xt!poy)hOxsbHst2{fVbq4-qDuWEsuF*r2XEQ_IOfrxvfTYym!j5Rhf&y! z(YOUw*_YC6<5ko`J5Uo|?+vHy4tUl@k_(4D&5;X*#S{N0N9Go#c>8+>K5cqB@?z1P X-o~PAk8e{$)8>Zt&-K1h96RHGbsa2w delta 2642 zcmXZd4@}f$9LMqJ5I7G^1d^=l6U5e81o4x#K{a zr?t(~^J?aTNI&|J}xU}L%;AV%0GHyp@(rX6{U;+IROvXPk7ym;Y zS?*%ja#W@6#}aHpZP1O%@N-mRU!zL?J?aR5M+NNsMMIf-m$(zNt@Cg?&%>y*jAA}M zgv!`KRjLWK(Mzathfwq0N1gR)RHe?M0{PZ@5!u%eNw^hN^6fYqW0-^cP=UOIGw~!Uq3=+YxrEc$-&~=gf&ZXxw|}|2V41bj zT8k@qzZsQ52P)tJRKb8D_ zD(xU@+&TMx6m`iiqbi`X$SJ5h5kRdMM4fp)X5$^GjaQ*A>-rUryU-&%(8L&O;xniX z9Ml4>s7mceRi+(vrk%Dwh?;-idI7b;7%K4VScLy#F&3_LD^u&x(2E9~fv=-B?nY&F z3iZP=f;!uuP#aHL<^GHZQKhX$9Zel-{9~w08&F3QM;&D|YTN#NV7NHg>Lv2uH-`Ak-#3ocFwxP!DMvZ$JRq|I+73@G&^f>BH_1Wj&V5YwRqcjxZ zHB@OPSGf~1Pz&axHVUDBV4|p7{ebPqP#f&F{RHZ=9Yj^?L)4M<+WwIB9OkgUxkzIH z{*B6{c#Yd%j4AXVx9&t`7DH9&IaGizVh*;TGVa7w{M6cqT4xYdfgx1IFQKCduhP)j z{ek*{@UP`uF@&iYLtV}|YU5YXiw99>eH2xh6F49HtiNH1ejv(M4%Z_8zsz2&!Tu=q z_tNmMb4xf26~IDNW*bloZ^DVoW#7k9nY5zjA44B@p)&gfb;$-%6-lXf|7~ZY?#@co zdiPaRe`TIKi#w6T{ z$+!zu*~WlvJd0Xr4{E~mJ@Ks9f=L7I34eGfF&2&_0+9mWj;*mL`rn?@_*9~{bZ$?5 MB;V7MDD}^8f$< diff --git a/ks_includes/locales/tr/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/tr/LC_MESSAGES/KlipperScreen.po index 43c3df1d0..fe9591b18 100644 --- a/ks_includes/locales/tr/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/tr/LC_MESSAGES/KlipperScreen.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-26 12:31-0300\n" -"PO-Revision-Date: 2024-11-28 16:42+0000\n" +"PO-Revision-Date: 2024-12-13 06:00+0000\n" "Last-Translator: Selim \n" "Language-Team: Turkish \n" @@ -21,7 +21,7 @@ msgstr "" #, python-format msgid "%s will be updated to version" -msgstr "%s şu sürüme güncellenecektir:" +msgstr "%s bu sürüme güncellenecektir:" msgid "(default)" msgstr "(varsayılan)" @@ -55,17 +55,17 @@ msgstr "Uygula" #, python-format msgid "Apply %s%.3f offset to Endstop?" -msgstr "Endstop'a %s%.3f telafi uygulansın mı?" +msgstr "Endstop'a %s%.3f telafisi uygulansın mı?" #, python-format msgid "Apply %s%.3f offset to Probe?" -msgstr "Ölçme Çubuğu'na %s%.3f telafi uygulansın mı?" +msgstr "Ölçme Çubuğu'na %s%.3f telafisi uygulansın mı?" msgid "Archived" msgstr "Arşivlenen" msgid "Are you sure do you want to exclude the object?" -msgstr "Nesneyi hariç tutmak istediğinizden emin misiniz?" +msgstr "Nesneyi çıkarmak istediğinizden emin misiniz?" msgid "Are you sure you want to run Emergency Stop?" msgstr "Acil Durdurmak istediğinizden emin misiniz?" @@ -83,7 +83,7 @@ msgid "Are you sure you wish to shutdown the system?" msgstr "Sistemi kapatmak istediğinizden emin misiniz?" msgid "Asks for confirmation before stopping" -msgstr "Durmadan önce onay ister" +msgstr "Durmadan önce onay istemektedir" msgid "Auto" msgstr "Otomatik" From 36c413f148aa090b1e84830e03789616d0d82f65 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sat, 7 Dec 2024 10:34:54 -0300 Subject: [PATCH 080/127] refactor: allow setting stats internally this should better reflect user requested temp while waiting for temp as a negative other frontends will not reflect the same value during the wait, nor will ks if it's restarted --- ks_includes/printer.py | 9 +++++++++ panels/main_menu.py | 1 + panels/temperature.py | 2 ++ 3 files changed, 12 insertions(+) diff --git a/ks_includes/printer.py b/ks_includes/printer.py index 0eb930cd4..dc4d30ceb 100644 --- a/ks_includes/printer.py +++ b/ks_includes/printer.py @@ -305,6 +305,15 @@ def get_stat(self, stat, substat=None): else: return self.data.get(stat, {}) + def set_stat(self, stat, data): + if self.data is None: + logging.error("Data is not initialized") + return + if stat not in self.data: + logging.error(f"Stat '{stat}' not found in data") + return + self.data[stat].update(data) + def get_fan_speed(self, fan="fan"): speed = 0 if fan not in self.config or fan not in self.data: diff --git a/panels/main_menu.py b/panels/main_menu.py index 1f138245a..645a187c7 100644 --- a/panels/main_menu.py +++ b/panels/main_menu.py @@ -193,6 +193,7 @@ def change_target_temp(self, temp): else: logging.info(f"Unknown heater: {self.active_heater}") self._screen.show_popup_message(_("Unknown Heater") + " " + self.active_heater) + self._printer.set_stat(name, {"target": temp}) def verify_max_temp(self, temp): temp = int(temp) diff --git a/panels/temperature.py b/panels/temperature.py index a2774f64a..889f9cec2 100644 --- a/panels/temperature.py +++ b/panels/temperature.py @@ -170,6 +170,7 @@ def change_target_temp_incremental(self, widget, direction): else: logging.info(f"Unknown heater: {heater}") self._screen.show_popup_message(_("Unknown Heater") + " " + heater) + self._printer.set_stat(heater, {"target": target}) logging.info(f"Setting {heater} to {target}") def update_graph_visibility(self, force_hide=False): @@ -479,6 +480,7 @@ def change_target_temp(self, temp): self._screen.show_popup_message( _("Unknown Heater") + " " + self.active_heater ) + self._printer.set_stat(name, {"target": temp}) def verify_max_temp(self, temp): temp = int(temp) From 4d6c5a35a0378eb8098a035425b7622460687cb1 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sat, 14 Dec 2024 21:35:48 -0300 Subject: [PATCH 081/127] fix: set dev requirements to gtk3 --- scripts/dev-requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/dev-requirements.txt b/scripts/dev-requirements.txt index b1a354511..a63e5157f 100644 --- a/scripts/dev-requirements.txt +++ b/scripts/dev-requirements.txt @@ -1,2 +1,2 @@ pycodestyle -pygobject-stubs +pygobject-stubs --config-settings=config=Gtk3,Gdk3 From ecfc97c43e2257610f3e1dadd3b1b0cb3dc5a07c Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sun, 15 Dec 2024 15:18:04 -0300 Subject: [PATCH 082/127] chore: update changelog --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c228ab413..d536607f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,6 @@ Probably all versions contain changes regarding documentation, translation, fixe ## 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) From 0c067399c7be31b8b34584fabe6c1cf813abf0de Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sun, 15 Dec 2024 15:25:35 -0300 Subject: [PATCH 083/127] fix(leds): button previews getting overriden fixes #1522 --- panels/led.py | 98 ++++++++++++++++++++++++++++----------------------- 1 file changed, 54 insertions(+), 44 deletions(-) diff --git a/panels/led.py b/panels/led.py index 12c4a17ed..788433328 100644 --- a/panels/led.py +++ b/panels/led.py @@ -9,15 +9,32 @@ from ks_includes.screen_panel import ScreenPanel +def rgb_to_hex(color): + hex_color = '#' + for value in color: + int_value = round(value * 255) + hex_color += hex(int_value)[2:].zfill(2) + return hex_color.upper() + + +def rgbw_to_rgb(color): + # The idea here is to use the white channel as a saturation control + # The white channel 'washes' the color + return ( + [color[3] for i in range(3)] # Special case of only white channel + if color[0] == 0 and color[1] == 0 and color[2] == 0 + else [color[i] + (1 - color[i]) * color[3] / 3 for i in range(3)] + ) + + class Panel(ScreenPanel): def __init__(self, screen, title): title = title or _("Leds") super().__init__(screen, title) self.da_size = self._gtk.img_scale * 2 - self.preview = Gtk.DrawingArea(width_request=self.da_size, height_request=self.da_size) + self.preview = ColorPreviewArea(size=self.da_size) self.preview.set_size_request(-1, self.da_size * 2) - self.preview.connect("draw", self.on_draw) self.preview_label = Gtk.Label() self.preset_list = Gtk.Grid(row_homogeneous=True, column_homogeneous=True) self.color_data = [0, 0, 0, 0] @@ -92,8 +109,8 @@ def color_selector(self, led): color = [0, 0, 0, 0] color[idx] = 1 button = self._gtk.Button() - preview = Gtk.DrawingArea(width_request=self.da_size, height_request=self.da_size) - preview.connect("draw", self.on_draw, color) + preview = ColorPreviewArea(size=self.da_size) + preview.set_color(color) button.set_image(preview) button.connect("clicked", self.apply_preset, color) button.set_hexpand(False) @@ -104,7 +121,7 @@ def color_selector(self, led): scale.set_has_origin(True) scale.get_style_context().add_class("fan_slider") scale.connect("button-release-event", self.apply_scales) - scale.connect("value_changed", self.update_preview) + scale.connect("value_changed", self.update_preview_label) self.scales[idx] = scale scale_grid.attach(button, 0, idx, 1, 1) scale_grid.attach(scale, 1, idx, 3, 1) @@ -119,8 +136,8 @@ def color_selector(self, led): self.presets.update(self.parse_presets(presets_data)) for i, key in enumerate(self.presets): logging.info(f'Adding preset: {key}') - preview = Gtk.DrawingArea(width_request=self.da_size, height_request=self.da_size) - preview.connect("draw", self.on_draw, self.presets[key]) + preview = ColorPreviewArea(size=self.da_size) + preview.set_color(self.presets[key]) button = self._gtk.Button() button.set_image(preview) button.connect("clicked", self.apply_preset, self.presets[key]) @@ -140,33 +157,15 @@ def color_selector(self, led): grid.attach(box, 3, 0, 2, 1) return grid - def on_draw(self, da, ctx, color=None): - if color is None: - color = self.color_data - ctx.set_source_rgb(*self.rgbw_to_rgb(color)) - # Set the size of the rectangle - width = height = da.get_allocated_width() * .9 - x = da.get_allocated_width() * .05 - # Set the radius of the corners - radius = width / 2 * 0.2 - ctx.arc(x + radius, radius, radius, pi, 3 * pi / 2) - ctx.arc(x + width - radius, radius, radius, 3 * pi / 2, 0) - ctx.arc(x + width - radius, height - radius, radius, 0, pi / 2) - ctx.arc(x + radius, height - radius, radius, pi / 2, pi) - ctx.close_path() - ctx.fill() - - def update_preview(self, args): - self.update_color_data() - self.preview.queue_draw() - self.preview_label.set_label(self.rgb_to_hex(self.rgbw_to_rgb(self.color_data))) + def update_preview_label(self, args): + self.preview_label.set_label(rgb_to_hex(rgbw_to_rgb(self.color_data))) def process_update(self, action, data): if action != 'notify_status_update': return if self.current_led in data and "color_data" in data[self.current_led]: self.update_scales(data[self.current_led]["color_data"][0]) - self.preview.queue_draw() + self.preview.set_color(self.color_data) def update_scales(self, color_data): for idx in self.scales: @@ -176,6 +175,7 @@ def update_scales(self, color_data): def update_color_data(self): for idx in self.scales: self.color_data[idx] = self.scales[idx].get_value() / 255 + self.preview.set_color(self.color_data) def apply_preset(self, widget, color_data): self.update_scales(color_data) @@ -203,20 +203,30 @@ def parse_presets(presets_data) -> {}: parsed[name].append(preset[color] / 255) return parsed - @staticmethod - def rgb_to_hex(color): - hex_color = '#' - for value in color: - int_value = round(value * 255) - hex_color += hex(int_value)[2:].zfill(2) - return hex_color.upper() - @staticmethod - def rgbw_to_rgb(color): - # The idea here is to use the white channel as a saturation control - # The white channel 'washes' the color - return ( - [color[3] for i in range(3)] # Special case of only white channel - if color[0] == 0 and color[1] == 0 and color[2] == 0 - else [color[i] + (1 - color[i]) * color[3] / 3 for i in range(3)] - ) +class ColorPreviewArea(Gtk.DrawingArea): + color = [0, 0, 0] + + def __init__(self, size=-1): + super().__init__(width_request=size, height_request=size) + self.connect("draw", self.on_draw) + + def set_color(self, value): + logging.debug(f"color: {value}") + self.color = rgbw_to_rgb(value) + self.queue_draw() + + def on_draw(self, da, ctx): + ctx.set_source_rgb(*self.color) + # Set the size of the rectangle + width = da.get_allocated_width() * .9 + height = da.get_allocated_height() * .9 + x = da.get_allocated_width() * .05 + # Set the radius of the corners + radius = width / 2 * 0.2 + ctx.arc(x + radius, radius, radius, pi, 3 * pi / 2) + ctx.arc(x + width - radius, radius, radius, 3 * pi / 2, 0) + ctx.arc(x + width - radius, height - radius, radius, 0, pi / 2) + ctx.arc(x + radius, height - radius, radius, pi / 2, pi) + ctx.close_path() + ctx.fill() From 14fdbc2f4cdeface5fb55a5c600dd935c67ebf97 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sun, 15 Dec 2024 16:16:11 -0300 Subject: [PATCH 084/127] chore: docs updates --- docs/Developers.md | 2 + docs/Quicktips.md | 74 ++++++++++++++------- docs/img/quicktips/OrcaSlicer-progress.png | Bin 0 -> 52666 bytes 3 files changed, 53 insertions(+), 23 deletions(-) create mode 100644 docs/img/quicktips/OrcaSlicer-progress.png diff --git a/docs/Developers.md b/docs/Developers.md index 039724936..c600da613 100644 --- a/docs/Developers.md +++ b/docs/Developers.md @@ -23,6 +23,8 @@ cd ~/KlipperScreen python3 -m venv .venv source .venv/bin/activate pip install -r scripts/klipperscreen-requirements.txt +# this one is optional: +pip install -r scripts/dev-requirements.txt ``` # Set configurations Create klipperscreen.conf and place it on the repo folder diff --git a/docs/Quicktips.md b/docs/Quicktips.md index ded009e51..12a092e03 100644 --- a/docs/Quicktips.md +++ b/docs/Quicktips.md @@ -20,11 +20,11 @@ fan1 will show in the interface, but _fan2 will be hidden. ## Layer Progress -### Accurate layer progress in the secondary screen of the printing panel: -* [PrusaSlicer](#prusaslicer_1) -* [Cura](#cura_1) -* [ideaMaker](#ideamaker_1) +* [PrusaSlicer](#prusaslicer) +* [Cura](#cura) +* [ideaMaker](#ideamaker) +* [OrcaSlicer](#orcaslicer) Follow this steps to provide the current layer in the printing information. @@ -45,6 +45,18 @@ Printer Settings > Custom Gcode > After layer change Gcode SET_PRINT_STATS_INFO CURRENT_LAYER={layer_num + 1} ``` +#### PrusaSlicer Layer Messages + +* Open PrusaSlicer +* Go to: `Printer Settings` > `Custom Gcode` > `After layer change Gcode` +* Add this: + +```ini +M117 Layer {layer_num+1}/[total_layer_count] : {filament_settings_id[0]} +``` + +![Layer_progress](img/quicktips/PS_SS_Layer_progress.png) + #### Cura @@ -88,6 +100,10 @@ Then save the changes and restart Klipper. After this, any new file sliced in Cura will tell Klipper how to handle the layer values +#### Cura Layer Messages + +Install the extension: `Display Filename and Layer on LCD` + #### IdeaMaker @@ -105,36 +121,48 @@ SET_PRINT_STATS_INFO CURRENT_LAYER={layer_index} `{total_layers}` doesn't seem to be available in the Start gcode (at least on IdeaMaker 4.3.2) -### Accurate layer progress as a message below the status: +#### IdeaMaker Layer Messages -* [PrusaSlicer](#prusaslicer) -* [Cura](#cura) -* [ideaMaker](#ideamaker) +* Open IdeaMaker +* Go to: `Slice` > `Manage templates` > `Click on your template` > `Edit` +* Select the tab named `Gcode` > `Layer Change Gcode` +* Paste this: + +```ini +M117 Layer {layer_index} / {total_layers} +``` -#### PrusaSlicer -* Open PrusaSlicer -* Go to: `Printer Settings` > `Custom Gcode` > `After layer change Gcode` -* Add this: +#### OrcaSlicer + +* Open OrcaSlcicer +* Go to Prepare or Preview and in the printer section click `Edit Preset` > `Machine G-code` +* In `Start Gcode` add: + +```ini +SET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count] +``` + +* In `Layer change Gcode` add: + +```ini +SET_PRINT_STATS_INFO CURRENT_LAYER={layer_num + 1} +``` + +#### OrcaSlicer Layer Messages + +* Open OrcaSlicer +* Go to Prepare or Preview and in the printer section click `Edit Preset` > `Machine G-code` +* Add this to "Layer Change Gcode": ```ini M117 Layer {layer_num+1}/[total_layer_count] : {filament_settings_id[0]} ``` -![Layer_progress](img/quicktips/PS_SS_Layer_progress.png) +![Layer_progress](img/quicktips/OrcaSlicer-progress.png) -#### Cura -Install the extension: `Display Filename and Layer on LCD` -#### IdeaMaker -* Open IdeaMaker -* Got to: `Slice` > `Manage templates` > `Click on your template` > `Edit` -* Select the tab named `Gcode` > `Layer Change Gcode` -* Paste this: -```ini -M117 Layer {layer_index} / {total_layers} -``` diff --git a/docs/img/quicktips/OrcaSlicer-progress.png b/docs/img/quicktips/OrcaSlicer-progress.png new file mode 100644 index 0000000000000000000000000000000000000000..3b800275f2726f14230226fb7e12b97904dbaec3 GIT binary patch literal 52666 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 literal 0 HcmV?d00001 From 370657952c0771639154577b8dbed5f4ce41ac5c Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Thu, 19 Dec 2024 16:25:43 -0300 Subject: [PATCH 085/127] chore: docs update how to revert --- docs/FAQ.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/FAQ.md b/docs/FAQ.md index d57b58599..a59a1f2be 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -5,8 +5,10 @@ The minimum required version of Python is 3.8. This requirement is checked during installation. ??? "Using Older Python Versions" - If you need to use Python 3.7, you can do so with KlipperScreen v0.4.1 by running: + If you need to use Python 3.7, you can revert KlipperScreen to v0.4.1 + Connect to the printer via SSH and: ```sh + cd ~/KlipperScreen git reset --hard v0.4.1 ``` From ac4ab738aa18e53670a65bda541920d7a41c2576 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sat, 21 Dec 2024 10:52:32 -0300 Subject: [PATCH 086/127] fix(job_status): filename initial state --- panels/job_status.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/panels/job_status.py b/panels/job_status.py index b8b92fe07..af17af908 100644 --- a/panels/job_status.py +++ b/panels/job_status.py @@ -27,8 +27,8 @@ def __init__(self, screen, title): self.oheight = 0.0 self.current_extruder = None self.fila_section = pi * ((1.75 / 2) ** 2) - self.filename_label = None - self.filename = None + self.filename_label = {'complete': "Filename"} + self.filename = "" self.prev_pos = None self.prev_gpos = None self.can_close = False From ef9781626e32f17d52e187f059b4481aa0f212ee Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sat, 21 Dec 2024 10:53:00 -0300 Subject: [PATCH 087/127] feat: add fine-tune to More --- config/main_menu.conf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config/main_menu.conf b/config/main_menu.conf index 3ac5dff7d..fbc4928e5 100644 --- a/config/main_menu.conf +++ b/config/main_menu.conf @@ -153,3 +153,8 @@ name: {{ gettext('System') }} icon: info panel: system enable: {{ moonraker_connected }} + +[menu __main more fine_tune] +name: {{ gettext('Fine Tuning') }} +icon: fine-tune +panel: fine_tune \ No newline at end of file From 3d064a3517f33fede2b3092c7fd3e7b5f29513f3 Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Sun, 29 Dec 2024 23:21:04 +0100 Subject: [PATCH 088/127] Translated using Weblate (Bulgarian) (#1525) Currently translated at 100.0% (325 of 325 strings) Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/bg/ Translation: KlipperScreen/KlipperScreen Co-authored-by: Niolay Danov --- .../locales/bg/LC_MESSAGES/KlipperScreen.mo | Bin 23992 -> 24222 bytes .../locales/bg/LC_MESSAGES/KlipperScreen.po | 14 +++++++------- ks_includes/locales/stats/bg.json | 5 +++++ 3 files changed, 12 insertions(+), 7 deletions(-) create mode 100644 ks_includes/locales/stats/bg.json diff --git a/ks_includes/locales/bg/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/bg/LC_MESSAGES/KlipperScreen.mo index a253a33cd0d4d922d833235f680c80a5980323b2..8e293b52572bb72c16dc677e3f274c8cea8260f0 100644 GIT binary patch delta 7315 zcmZA530PKD9>?*E3m}LnD2jl*$Rfxh;DRfHfg&O}A}VGYDkh4GTnwXX; zS}xh5-ordS-N!$lbI!eIKlehtz1MBSemCb? zzh-%ZU~~KceeeXj;~DhE z3)mEYMLl;JLoLf`T_d3m0_oioQ?MJRVH}oWELLGO9yR$(7*D5o6)vM@avSN>a_?m4!%-{I71dx0s$M!W zCo2b;p*0OPkqY#{8f=66F@pZBlO(hxSB%$@f3DhEkx*I*z-UxQ15q6f#nw0q)nGBI zg9WI1PSh?|nDQzNBfk~3a_^&4GjAZF8D2*<-{ss68HwU2rOD ziI<}~ei>D77iuE!q9%AAwKCtMo^KMy`YRE_u(Y(jQ4JQL8h8lX;S=bAn@ssDsIA#; z%8#H{=C~<8WxRmu@K@AIcz3oZ;y@k7)Xq+O#Dgf%jE12v7NQ1Ff@=6a)JiQz&E#>^ ziam)s15cv{^nxkhf!dlkP|qJhwez9zGwe?OoRfqa@(;Hg=!nWkp&!PhW}aruLJedD zYGn#cegx`@;(S(96sJ-2W?Qs`!9IRug8UAR>ucBt+ z8)0`4h?;2_>N}8(sy7(b!BpdH<9(P)`66TmoYp%e)bSP6(%(kCx4x0~X^lqhT{h}4 zO+C8x%#CQ&fZ|QQH|lT> zKs7WD1Mwbo$3>`)Do_Kd#HP3owK5w~^>(5<-jCXvLn^0#>lg_&aLV`%x|9FOcnMYU z8fqnOp*r&KVjGMqk3>D!*EkS$hB8ck40@0sk9y6gpi>p+n}TJiC9FctU^8l|x0(BU zQD@^gM&Ng-mGO$UU#l*t8E2wCSff!}F%z}552ETXL%m&_qgnq%61yny#0$os%>xan z0X2)USHug|KpWIdV^H-IP_N%a)ble?1DRu7jGFN(li!MZ?#&q1UnAT{fd?K#&G=)~ z2){=StO2!$w@}Y}ceOhXL^Yg^x<4M(PKn9SF)qXwlrJ;)SEJgma+(LWn;W~)og43( z{0Hboz82NdY1GVqLCxS6YJkmR?Q$Q~%5*}lNI0s!Zm5a%LeVq;9 zHN!_x53EErxCzzKHselHz8f{L1E{U3MQ^M}7R$PVs@EybZl?=sKyk=Qt=i`4IQI_gZ#G36Dgi9CfG_Zrj$w_^srgR0j&-d^dJs52OZ+M!tV!tU{$ zK@A|40)1byu^X0PBCa+0W2gyT$37U5V0SP9wUx!Ffy_1KON}ehhw^7p6L=9dko~9u z98cg3YNTIKpp`m@kywvf`Bsdk2l}H%o`rgAN1!hjqb4v9wE~N<6|P3Ly9IUjUNz-4 zsD2Kk8yXT3_l40`8kjYycP|tm0%D+V&)&`8Cf6JSV(gVq;futj=YUQFjUW~lS z)|03XcB59z>Th@40=06%*a5S#BThyZ(OQVw>l$p2r*RTqMyEO&J;45sEX7dr>v1CP zLk%dHKN^N$46-QJ9FuFbf$kW3hy6!%6l&{oQ3EM7`572R zem<&xm6JpWiJhk41Zrg8n0$lLlXccif>5VD0-InzQ=WS#M^hKEqE^C{Fy zv>0l?Md7G^^01vYa{`Ih6wF0WdeSboyfw^j&;vVD?uQy+Pvc#v`j4UNS7I!# zMXlr!4982Tfdu5(Z&MyR`G{FdNrd8IS2{oV*7>z}!ewHHttQYyAGjeqV>#tMU@-Ox;mjqOPm~kd*1}jiAUyo|A z8WZshY5+bX?GA%c`FLZ0)QSuTc)X08ESHt=IPY&|I*cykR zz87QB7w2OyT!MOTKWc#WsQPV2*<0j5Kk|c7{S+c^s^y$YBA3Jt)Dqsr*%)464`dap z!b_+IYfv2@Ms3BXs9!4QP+NEvHPF_hZNpH{Cu0H*LYVje}IHzA^8QEg>^U|J5pGREActJg+6-!*N(Hl zfZI?@SBIMMb<~VKIO-aC05Ul%6SY$7Py;xGdj1n^i|0`tH<)}XM?HspKB~RvQLpdo z*g^0ADH58|Z>Ym!-DNLnB&xyylh45r@>9?U7o&a$JcX*i3N^sZ$T!KlhJkp;1pCW* z7kZGNge`D7Iz36uC835M!Vr8I-SCfB2nDp~8hJH-OB^P?Ak^p|uQ;CN_m=A#@y8n` zt#k7u(Z-GSFDEg@+z?;?A^i*Kt~BOH93!1gc$@p~lxeol5sQff#6&`;T2})1o7ze1 z9R8Phk9digMCkI@{@0M`Ok5_m5?YZ}#Jz+*n|~#A&vpI-Iyc`ZjT%@Fw4! z=uPMKaH~ccnN3l=mbWugN4v68%lV^SFeV<61*g*n|D==0`k3)DpTpX|DoD5le|k@&iy;KcWTs<4#xB{?VR-lO$gu29aKi z|FLhme%{T`I^q@)%6+~s*1w3|gszW?l|&iQmixNi)DP19o^t)yR1X|W=!2!p`ID`+ zA7>Lyc=!ljBvOfg68$L4z&@tY7}C0C5e>uu%K3I#r-;TYkg^}h_~WL=LcHIkJKEaw zKSX95@dn`_HWRvHi7$y4i7*;^0d;LB;)pfMaPg&f{h8eyA0~Pc9}&^STZFEo#QVfq zWy}?<{a;OH9PaGqxW^Ry4NHjMiP1zop(~kqi1?XkN*g!vF+$fnuAlsm za*QH;i1nuIDeOx`n7nKKyVHQKD#F90T?PD@Mr4`HYuL%$pKi()U|Zq=B8Yq4a0?Ml zdL8BxNkronK;jPWbtXR1H>|t4<3oY2(?pa>E8j;y{&c-eKHro*fe#YjnY{Qr(ay9{ zO8PS*&E&gbC-Qp;H@9l{po?BjCeNt;A##joo6^~nXIKTZgkx$^NojF)--NH-0td}2 zy{D+Wq-d5SdRS>mSy^#;{^auF;#o1PA`-i%6=tT7j31sCpONm!%IiCPXzaMW+)S^W zqI>7Yk18*kb#H0W+}Y)Q9fJ#UavZto!!sTIGl!=S%}Gno$QYTKpP#yFUSfUZEJxS? zM^ZnpvGGHSXBC&*RmK!gqH?jLXF^h9{FLJP)eDn$1^7QxyR&vr?cTcOb&uEXBE7%1 uraB?3mtXJ3!ndv34RwqE{0t=r9JMtLJzw`o-J;rqSV8VU^@MTbn*I+$sw)cs delta 7108 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\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" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.10-dev\n" #, python-format msgid "%s will be updated to version" @@ -504,7 +504,7 @@ msgid "Loading..." msgstr "Зареждане..." msgid "Lock" -msgstr "" +msgstr "Заключване" msgid "Lost Connection to Moonraker" msgstr "Не може да се свърже с Moonraker" @@ -918,10 +918,10 @@ msgid "Unload" msgstr "Извади" msgid "Unlock" -msgstr "" +msgstr "Отключи" msgid "Unlock failed" -msgstr "" +msgstr "Отключването е неуспешно" msgid "Unretract Extra Length" msgstr "Отмяна на прибиране на допълнителната дължина" diff --git a/ks_includes/locales/stats/bg.json b/ks_includes/locales/stats/bg.json new file mode 100644 index 000000000..616889006 --- /dev/null +++ b/ks_includes/locales/stats/bg.json @@ -0,0 +1,5 @@ +{ + "language_name": "Bulgarian", + "translated_percent": "100.0", + "filename": "ks_includes/locales/bg/LC_MESSAGES/KlipperScreen.po", +} \ No newline at end of file From acae6a291d173fb8d5a6f88820676b8bd55c6a3b Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sat, 4 Jan 2025 15:16:49 -0300 Subject: [PATCH 089/127] chore(docs): update remote methods --- docs/Android.md | 25 +++++++++++++++---------- docs/VNC.md | 47 ++++++++++++++++++++++++++++------------------- 2 files changed, 43 insertions(+), 29 deletions(-) diff --git a/docs/Android.md b/docs/Android.md index ca9367acc..0dfa557a8 100644 --- a/docs/Android.md +++ b/docs/Android.md @@ -1,25 +1,30 @@ -# Android +# XServer-XSDL (Android Only) -This article describes how to use KlipperScreen from an Android device +This article describe how to use KlipperScreen from an Android device using XServer-XSDL !!! warning The experience may not be equal to run KlipperScreen natively. Depending on the device or the network you may encounter performance degradation or other issues. +!!! bug + This method may cause [memory-leaks](https://github.com/KlipperScreen/KlipperScreen/issues/862) + + It's recommended that you use [VNC](VNC.md) instead or at least install [earlyoom](https://packages.debian.org/en/stable/earlyoom) + + 1. [First installl KlipperScreen](Installation.md) -2. Install [XServer-XSDL](https://play.google.com/store/apps/details?id=x.org.server) on the Android device - Devices that do not have acces to the play store can grab the apk from the [official sourceforge]( - https://sourceforge.net/projects/libsdl-android/files/apk/XServer-XSDL/). ViewTouch does work too +2. Download the apk of XServer-XSDL or ViewTouch from the [official sourceforge](https://sourceforge.net/projects/libsdl-android/files/apk/XServer-XSDL/). - with older versions of Android you may have to use v1.11.40 + since it's no longer on the play store. -3. Choose [USB (ADB)](#adb) or [WI-FI](#wifi) + With Android 4 you may have to use v1.11.40 -### ADB +3. Install the app on the Android device -!!! bug - Some [users have found](https://github.com/KlipperScreen/KlipperScreen/issues/862) that using this method may cause memory-leaks +4. Choose [USB (ADB)](#adb) or [WI-FI](#wifi) + +### ADB !!! warning Leaving the phone always connected it's not recommended, remove the battery to avoid issues. diff --git a/docs/VNC.md b/docs/VNC.md index 5d57fb8df..1fa0c2cb4 100644 --- a/docs/VNC.md +++ b/docs/VNC.md @@ -38,30 +38,15 @@ The host device could be for example a Raspberry Pi sudo systemctl restart KlipperScreen.service ``` -6. On KlipperScreen set the following configuration: - -Turn off DPMS and Display timeout: - -![disable_dpms_poweroff](img/disable_dpms_poweroff.png) - ## On the remote device: -1. Install a VNC viewer and configure it to the ip of the host. +Install a VNC viewer and configure it to the ip of the host. -???+ example "Example using an iPad" +??? example "Example using an iPad" #### Example using an iPad * Install a VNC viewer for example: `RealVNC Viewer: Remote Desktop` - ##### Prevent unwanted rotation of UI: - * Go to `Settings` > `General` > Set `Use side switch to` to `Lock Rotation` - ##### Avoid accidentally switching between apps: - * Go to `Restrictions` > Set passcode > Enable restrictions. - * Open - * Triple-click "Home" button - * Guided access pops up - * Press "Start" - * Now iPad is locked to VNC viewer until "Guided access" mode is disabled by triple-clicking "Home" button and entering the password. - ##### On the VNC viewer: + * Open the VNC viewer app * Press "+" button at the top right * Enter IP address of your print host. * Press "Save" @@ -71,4 +56,28 @@ Turn off DPMS and Display timeout: * VNC client will complain about unencrypted connection. Disable the warning and say "Connect" * Use or skip tutorial * Press the "Pin" icon to hide the panel. - * Enjoy! + ##### Prevent unwanted rotation of UI + * Go to `Settings` > `General` > Set `Use side switch to` to `Lock Rotation` + ##### Avoid accidentally switching between apps + * Go to `Restrictions` > Set passcode > Enable restrictions. + * Open + * Triple-click "Home" button + * Guided access pops up + * Press "Start" + * Now iPad is locked to VNC viewer until "Guided access" mode is disabled by triple-clicking "Home" button and entering the password. + +??? example "Example using an Android device" + #### Example using an Android device + * Install a VNC viewer for example: `RealVNC Viewer: Remote Desktop` + * Open the VNC viewer app + * Press "+" button at the right + * Enter IP address of your print host. + * Press "Save" + * Double-click on an icon with name or IP address you have just added. + * VNC client may complain about unencrypted connection. Disable the warning and say "Connect" + ##### Prevent unwanted rotation of UI + * Lock the rotation using the buttons in the notification bar or in device Settings > Screen > Disable "Rotate automatically" + +It's recommended to turn off DPMS and Display timeout: + +![disable_dpms_poweroff](img/disable_dpms_poweroff.png) From 7ed39038cec15c55cf05f60965aec4a2e31fa954 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Wed, 8 Jan 2025 13:23:37 -0300 Subject: [PATCH 090/127] fix(prompts): call screensaver now wake --- ks_includes/widgets/prompts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ks_includes/widgets/prompts.py b/ks_includes/widgets/prompts.py index 11c464e26..1c7cf9050 100644 --- a/ks_includes/widgets/prompts.py +++ b/ks_includes/widgets/prompts.py @@ -127,7 +127,7 @@ def show(self): ) self.prompt.connect("key-press-event", self._key_press_event) self.prompt.connect("delete-event", self.close) - self.screen.wake_screen() + self.screen.screensaver.close() def response(self, dialog, response_id): for button in self.buttons: From 08a9421d216723bd7c50429cd15443536486dbcc Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Tue, 4 Feb 2025 17:43:54 -0300 Subject: [PATCH 091/127] refactor: dpms timeout and set (#1529) refactor: check xset return when setting dpms --- ks_includes/config.py | 2 +- screen.py | 84 ++++++++++++++++++++++++------------------- 2 files changed, 49 insertions(+), 37 deletions(-) diff --git a/ks_includes/config.py b/ks_includes/config.py index 18ff70900..65f7461ef 100644 --- a/ks_includes/config.py +++ b/ks_includes/config.py @@ -581,7 +581,7 @@ def save_user_config_options(self): logging.error(f"Error writing configuration file in {filepath}:\n{e}") def set(self, section, name, value): - self.config.set(section, name, value) + self.config.set(section, name, str(value)) def log_config(self, config): sensitive_keys = [ diff --git a/screen.py b/screen.py index 1a5e603d5..2a9959572 100755 --- a/screen.py +++ b/screen.py @@ -616,7 +616,7 @@ def check_dpms_state(self): return False state = functions.get_DPMS_state() if state == functions.DPMS_State.Fail: - logging.info("DPMS State FAIL: Stopping DPMS Check") + self.show_popup_message(_("DPMS has failed and has been disabled")) self.set_dpms(False) return False elif state != functions.DPMS_State.On: @@ -626,61 +626,73 @@ def check_dpms_state(self): def wake_screen(self): # Wake the screen (it will go to standby as configured) + if not self.use_dpms: + logging.debug("DPMS is disabled cannot wake the screen") + return if self._config.get_main_config().get('screen_blanking') != "off": logging.debug("Screen wake up") - if not self.wayland: - os.system(f"xset -display {self.display_number} dpms force on") + try: + subprocess.run( + f"xset -display {self.display_number} dpms force on", + shell=True, check=True + ) + except subprocess.CalledProcessError as e: + self.show_popup_message(f"Error: {e}") + self.set_dpms(False) + return def set_dpms(self, use_dpms): if not use_dpms: - GLib.source_remove(self.check_dpms_timeout) + if self.check_dpms_timeout is not None: + GLib.source_remove(self.check_dpms_timeout) self.check_dpms_timeout = None self.use_dpms = use_dpms + self._config.set("main", "use_dpms", use_dpms) + self._config.save_user_config_options() logging.info(f"DPMS set to: {self.use_dpms}") if self.printer.state in ("printing", "paused"): self.set_screenblanking_timeout(self._config.get_main_config().get('screen_blanking_printing')) else: self.set_screenblanking_timeout(self._config.get_main_config().get('screen_blanking')) + def set_dpms_timeout(self): + try: + subprocess.run( + f"xset -display {self.display_number} s off", + shell=True, check=True + ) + subprocess.run( + f"xset -display {self.display_number} dpms 0 {self.blanking_time} 0", + shell=True, check=True + ) + except subprocess.CalledProcessError as e: + self.show_popup_message(f"Error: {e}") + self.set_dpms(False) + return + if self.blanking_time > 0 and self.check_dpms_timeout is None: + self.check_dpms_timeout = GLib.timeout_add_seconds(1, self.check_dpms_state) + return + def set_screenblanking_printing_timeout(self, time): if self.printer.state in ("printing", "paused"): self.set_screenblanking_timeout(time) def set_screenblanking_timeout(self, time): - if not self.wayland: - os.system(f"xset -display {self.display_number} s off") - self.use_dpms = self._config.get_main_config().getboolean("use_dpms", fallback=True) - if time == "off": - logging.debug(f"Screen blanking: {time}") self.blanking_time = 0 - if not self.wayland: - os.system(f"xset -display {self.display_number} dpms 0 0 0") - return - - self.blanking_time = abs(int(time)) - logging.debug(f"Changing screen blanking to: {self.blanking_time}") - if self.use_dpms and functions.dpms_loaded is True: - if not self.wayland: - os.system(f"xset -display {self.display_number} +dpms") - if functions.get_DPMS_state() == functions.DPMS_State.Fail: - logging.info("DPMS State FAIL") - self.show_popup_message(_("DPMS has failed to load and has been disabled")) - self._config.set("main", "use_dpms", "False") - self._config.save_user_config_options() - else: - logging.debug("Using DPMS") - if not self.wayland: - os.system(f"xset -display {self.display_number} dpms 0 {self.blanking_time} 0") - 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") - if not self.wayland: - os.system(f"xset -display {self.display_number} dpms 0 0 0") - self.screensaver.reset_timeout() - return + else: + try: + self.blanking_time = abs(int(time)) + except Exception as exc: + logging.exception(exc) + self.use_dpms = self._config.get_main_config().getboolean("use_dpms", fallback=False) + self.use_dpms &= functions.dpms_loaded + + if self.use_dpms: + self.set_dpms_timeout() + else: + self.screensaver.reset_timeout() + logging.debug(f"Blanking timeout: {time} DPMS:{self.use_dpms}") def show_printer_select(self, widget=None): self.base_panel.show_heaters(False) From 57b1749d005432d1e585d0c3e53a2144beb0f1e4 Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Tue, 4 Feb 2025 21:44:34 +0100 Subject: [PATCH 092/127] chore(locales): Translations update from Hosted Weblate (#1532) * Translated using Weblate (Dutch) Currently translated at 99.6% (324 of 325 strings) Co-authored-by: Jelle van Campen Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/nl/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (German) Currently translated at 100.0% (325 of 325 strings) Co-authored-by: Eduard Iten Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/de/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Turkish) Currently translated at 100.0% (325 of 325 strings) Co-authored-by: Selim Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/tr/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Portuguese (Brazil)) Currently translated at 99.0% (322 of 325 strings) Co-authored-by: Erick Andrade Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/pt_BR/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Russian) Currently translated at 99.6% (324 of 325 strings) Co-authored-by: gfbdrgng Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/ru/ Translation: KlipperScreen/KlipperScreen --------- Co-authored-by: Jelle van Campen Co-authored-by: Eduard Iten Co-authored-by: Selim Co-authored-by: Erick Andrade Co-authored-by: gfbdrgng --- .../locales/de/LC_MESSAGES/KlipperScreen.mo | Bin 19494 -> 19503 bytes .../locales/de/LC_MESSAGES/KlipperScreen.po | 8 +- .../locales/nl/LC_MESSAGES/KlipperScreen.mo | Bin 16791 -> 18725 bytes .../locales/nl/LC_MESSAGES/KlipperScreen.po | 54 ++++----- .../pt_BR/LC_MESSAGES/KlipperScreen.mo | Bin 16480 -> 19367 bytes .../pt_BR/LC_MESSAGES/KlipperScreen.po | 107 +++++++++--------- .../locales/ru/LC_MESSAGES/KlipperScreen.mo | Bin 23608 -> 24090 bytes .../locales/ru/LC_MESSAGES/KlipperScreen.po | 23 ++-- ks_includes/locales/stats/nl.json | 5 + ks_includes/locales/stats/pt_BR.json | 5 + ks_includes/locales/stats/ru.json | 2 +- .../locales/tr/LC_MESSAGES/KlipperScreen.mo | Bin 19356 -> 19356 bytes .../locales/tr/LC_MESSAGES/KlipperScreen.po | 6 +- 13 files changed, 112 insertions(+), 98 deletions(-) create mode 100644 ks_includes/locales/stats/nl.json create mode 100644 ks_includes/locales/stats/pt_BR.json diff --git a/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.mo index f73e034487e7ca4019046810fffc01f1d1017a09..9039e7060962fe2529ab360b5d537a6dedccec9e 100644 GIT binary patch delta 2700 zcmXZddrZ}39LMnoj~p(F8FG_bM=o(0cLV_y6$nMK=9taPS_B;DS$3SrEX(+fOnQG8{|R`@`?~gT0>1`906~@;isVlOg>l zLk1cnozo%4JW*tf&lnR`VoW3!U^rG{G1g!_c3=c{<30Eq&ci;8#`kbOUPL{A3A6Aj zF2h@>^J7YlDa89qjbkbqJj6mizF;>l*!izWY$kTOF=<$jx*&iGD2O@uoOJ*fF#jGG z<0LM^X$(bgnY+Ib6-Yvv;||hU@Ul>Vy08qxa2G1mAnM>w)WI)e1-^lK_zkL3A?5Bx zrRZZ`iRrilb$%!6;v+~g%qtE9MfeFW!4Xu6C#`>>0+_+27`eg?ECcnqJX8hB?Rqn2 zFyD_hRa63_sB@j48N@L72i22oTs$73mx4;b$z+hgAO};i1{3iyEW|^Yjb|_) z$501*YTTDG4mB@AT~v!|;a1d3x)1eB*JbDDPyt>>5^~Hi17$v8H>NOy`At+takcJG zauTY?ji|`Cqe}jWUEhZ)b*Hr(b#5;zkT+4851=YJG^bT|tz{asX`AKLwEsCVf*jN*Rtlij$9igX6mlE??#i_%dK z6rxI8g?g(SQ9XSa6;KfM+|zdcs-2%kojYXbS5OuB5uK$B{$-%IadEx-{ftLtkd0a| zN4;dLF$J4&uD4jkybBe;`=}CsgkJp2&WACS`55Z^KaQ&Cje7d8j6Cbz%wka=$U>F2 z0>f~VwFwo#PSpNE+=kug#a~e8-9QCAi(weE!L4AjH48IYFWEr-)#Gg}ti@wU_02V0 zjxi1V$HE5GK|QF8Uq^jQ&R{rxj%v|YsEUrG0=SLJbiqdV`83o^oNHa-Fvw@24s}pF z=HfGU-iK+-`%wpv;9Q2djQK38=e|wuJ5gz^MFp@Kb#5z$;2zWuToCzxX4XB+fL~WL zWH+X99&>M_`}K=Jm3EOe7IjcEs#U3j2V=TZyv0TNZTS|MDZd;0KPpr#{r~^~ delta 2691 zcmXZddrZ}39LMqJAQ$7JaR7;H2NAi96L$?PJX|y)T*g{BTZ;up!OV)wqGbDRiHVLs zWVW)@`G*YGoZ@1xrj;w131hXfxukNesbysvYy3l@y+8b(zh2Mf_j{i2<;P*XCWVTVF^ZHD=O2SsDpb^2lwOS_z~vg6z1Ur)J1t~ z+=>=rCiCY|=Xawn?nR1W_Bjj`;dzY1aa4(~TYp0ZFpEj(S?dOtf_g3!RROXp(`<~gVb3NZ@@2JhcT?*w?VhiNh0Ul$_M^@nL{<1>>lyTNzxjrNGP;T?)eI_=Th=?MK>k7X?txv8T;~QJi+Vm2 zwV#KoOc~Z%<0cVim9hmLwT#2^|cQKg?oWqcPE`Mg~ZeUd&hPeQ#{fGTN| z^;N5bRjeOEJ}Yw-RgoAPuYglgt@2k=fAy|`1zp^UDcFxXcnF*Eb5wL&eQJL>RwYVGg-0t;`dvG5MJ{AU0k)B5V;CzAV)eP!@Ur{g4 z;u4%kFWyH592;;i&O!y8hiYB1od>LSsBWsHM^WqJsQ11@1@;4~LVsW){)c)mp8hBSCzZh?41Ac5<(Q0HumC$T2T!1Wq9;)Y z&tnqCRJ-$R)I}Aj7B-+h(l*pDU5}lgLIrpMNysr{43zn_-I&2u%x|MIim7pblD()N z*PtTbj4Ju_cD)T%>Tc^E)VYJGKt4oeeiBv5kwqP2#_Yy4>VRKRCBKJd_%E)&qFQ&q z4z>RRsuHhQyHT0-qs|$$>&H=neroqGqrRo@F^2oik9OlWD$-e0OFSFgi;__-}s`51;VpG5urPoXM$V+&~39hY=W6=T!oMC;;Vc=(B9qOQV%)<^l zKZYxr52Fqq$HfdWgZUh)=ZVj_-$bFc0u?|l>fEj9!4}jHToCy`W~#av@at+u?8aRT zVZMN&Xd2wohFPOg2gRX!nK1fx{6Jc0xxb@jG^%)ENv5y0J?N_rb_846c6IOC-uYIr a{nGKEuQk}=YYcXFy%TKj8ZBP4knlgskSm7( diff --git a/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.po index 5a38fc653..bc0cf60a9 100644 --- a/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/de/LC_MESSAGES/KlipperScreen.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-26 12:31-0300\n" -"PO-Revision-Date: 2024-12-15 14:02+0000\n" -"Last-Translator: Exp3rt \n" +"PO-Revision-Date: 2025-01-13 18:53+0000\n" +"Last-Translator: Eduard Iten \n" "Language-Team: German \n" "Language: de\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.9-rc\n" +"X-Generator: Weblate 5.10-dev\n" #, python-format msgid "%s will be updated to version" @@ -143,7 +143,7 @@ msgid "Changes how the interface looks" msgstr "Ändert das Aussehen der Benutzeroberfläche" msgid "Changes how the time remaining is calculated" -msgstr "Ändert die Berechnungsweiße der Restzeit" +msgstr "Ändert, wie die verbleibende Zeit berechnet wird" msgid "Channel" msgstr "Kanal" diff --git a/ks_includes/locales/nl/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/nl/LC_MESSAGES/KlipperScreen.mo index ee5d04f51fd57dfdae6cc078de29752259e398af..22454bb3dfc06a7629e9e2caed599ea67fecd45e 100644 GIT binary patch delta 8657 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 E0)Hv`>i_@% delta 6773 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 diff --git a/ks_includes/locales/nl/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/nl/LC_MESSAGES/KlipperScreen.po index f65d431be..82aa808ed 100644 --- a/ks_includes/locales/nl/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/nl/LC_MESSAGES/KlipperScreen.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-26 12:31-0300\n" -"PO-Revision-Date: 2024-10-10 13:25+0000\n" -"Last-Translator: Thijs Triemstra \n" +"PO-Revision-Date: 2025-01-08 14:01+0000\n" +"Last-Translator: Jelle van Campen \n" "Language-Team: Dutch \n" "Language: nl\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.10-dev\n" #, python-format msgid "%s will be updated to version" @@ -219,7 +219,7 @@ msgid "Disable for 12hs with am / pm" msgstr "Uitschakelen gedurende 12 uur met am / pm" msgid "Disconnect" -msgstr "" +msgstr "Ontkoppelen" msgid "Distance (mm)" msgstr "Afstand (mm)" @@ -345,6 +345,8 @@ msgstr "Lettertype Grootte" msgid "For mouse control or to verify touchscreen accuracy" msgstr "" +"Voor muisbediening of om de nauwkeurigheid van het aanraakscherm te " +"verifiëren" msgid "Forget" msgstr "Vergeet" @@ -425,7 +427,7 @@ msgid "Invalid temperature" msgstr "Ongeldige temperatuur" msgid "Inversely affects the icon size" -msgstr "" +msgstr "Beïnvloedt de icoongrootte omgekeerd" msgid "Invert X" msgstr "Invert X" @@ -443,7 +445,7 @@ msgid "It's possible that the configuration is not correct" msgstr "Het is mogelijk dat de configuratie incorrect is" msgid "Job Status" -msgstr "" +msgstr "Opdrachtstatus" msgid "Klipper Restart" msgstr "Klipper Herstarten" @@ -476,7 +478,7 @@ msgid "Large" msgstr "Groot" msgid "Last Duration" -msgstr "" +msgstr "Laatste duur" msgid "Last Used" msgstr "Laatst Gebruikt" @@ -503,7 +505,7 @@ msgid "Loading..." msgstr "Laden..." msgid "Lock" -msgstr "" +msgstr "Vergrendelen" msgid "Lost Connection to Moonraker" msgstr "Verbinding met Moonraker verbroken" @@ -557,7 +559,7 @@ msgid "Menu" msgstr "Menu" msgid "Minimum Cruise Ratio" -msgstr "" +msgstr "Minimale Cruise Ratio" msgid "Minimum:" msgstr "Minimum:" @@ -626,10 +628,10 @@ msgid "Notifications" msgstr "Notificaties" msgid "Nozzle diameter" -msgstr "" +msgstr "Diameter mondstuk" msgid "Only for the move panel" -msgstr "" +msgstr "Enkel voor het bewegingspaneel" #, python-format msgid "Outdated by %d" @@ -680,7 +682,7 @@ msgid "Pressure Advance:" msgstr "Pressure Advance:" msgid "Pressure advance" -msgstr "" +msgstr "Pressure advance" msgid "Print" msgstr "Print" @@ -792,7 +794,7 @@ msgid "Screws Adjust" msgstr "Schroeven Aanpassen" msgid "Screws not used:" -msgstr "" +msgstr "Ongebruikte schroeven:" msgid "Send" msgstr "Verstuur" @@ -816,7 +818,7 @@ msgid "Show cursor" msgstr "Toon cursor" msgid "Show only devices that are able to be set" -msgstr "" +msgstr "Toon enkel apparaten die ingesteld kunnen worden" msgid "Shutdown" msgstr "Afsluiten" @@ -864,7 +866,7 @@ msgid "Starting update for" msgstr "Update starten voor" msgid "Swaps buttons if they are on top of each other, affects other panels" -msgstr "" +msgstr "Wissel knoppen als ze over elkaar staan, beïnvloedt andere panelen" msgid "System" msgstr "Systeem" @@ -888,19 +890,19 @@ msgid "Temperature too low to extrude" msgstr "Temperatuur te laag voor extrude" msgid "The system doesn't meet the minimum requirement" -msgstr "" +msgstr "Het systeem voldoet niet aan de minimum vereisten" msgid "This panel supports up-to 9 screws in a 3x3 Grid" -msgstr "" +msgstr "Dit paneel ondersteunt tot 9 schroeven in een 3x3 raster" msgid "This will affect screw positions and mesh graph" -msgstr "" +msgstr "Dit zal de schroefposities en mesh graph beïnvloeden" msgid "Timeout for screen black-out or power-off" -msgstr "" +msgstr "Timeout voor schermbeveiliging of uitschakelen" msgid "Timeout for screen black-out or power-off during printing" -msgstr "" +msgstr "Timeout voor schermbeveiliging of uitschakelen tijdens printen" msgid "Total:" msgstr "Totaal:" @@ -915,10 +917,10 @@ msgid "Unload" msgstr "Uitladen" msgid "Unlock" -msgstr "" +msgstr "Ontgrendelen" msgid "Unlock failed" -msgstr "" +msgstr "Ontgrendelen mislukt" msgid "Unretract Extra Length" msgstr "Unretract Extra Lengte" @@ -936,7 +938,7 @@ msgid "Updating" msgstr "Bezig met updaten" msgid "Useful for un-responsive touchscreens" -msgstr "" +msgstr "Nuttig voor niet-reagerende aanraakschermen" msgid "User" msgstr "Gebruiker" @@ -945,7 +947,7 @@ msgid "WebRTC is not supported by the backend trying Stream" msgstr "WebRTC is niet ondersteund door de backend" msgid "Working" -msgstr "" +msgstr "Werkend" msgid "XY Move Speed (mm/s)" msgstr "XY Move Snelheid (mm/s)" @@ -979,7 +981,7 @@ msgstr[0] "dag" msgstr[1] "dagen" msgid "g" -msgstr "" +msgstr "g" msgid "hour" msgid_plural "hours" @@ -1010,7 +1012,7 @@ msgid "mm³/s" msgstr "mm³/s" msgid "s" -msgstr "" +msgstr "s" msgid "second" msgid_plural "seconds" diff --git a/ks_includes/locales/pt_BR/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/pt_BR/LC_MESSAGES/KlipperScreen.mo index 77695d1301b6cc9d220e48e9b5b094e67e39dffe..e5434ac4f666a053e8938ae166ec52a4c290833b 100644 GIT binary patch literal 19367 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 Ne}j|+l2e!k{|g;;814W7 delta 6536 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 NJIR^5o$Hya{|_&N4ln=! diff --git a/ks_includes/locales/pt_BR/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/pt_BR/LC_MESSAGES/KlipperScreen.po index a08e2259a..a4ff3a743 100644 --- a/ks_includes/locales/pt_BR/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/pt_BR/LC_MESSAGES/KlipperScreen.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-26 12:31-0300\n" -"PO-Revision-Date: 2024-05-07 02:10+0000\n" -"Last-Translator: Rui Menezes \n" +"PO-Revision-Date: 2025-01-23 05:01+0000\n" +"Last-Translator: Erick Andrade \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\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.5.4-dev\n" +"X-Generator: Weblate 5.10-dev\n" #, python-format msgid "%s will be updated to version" @@ -173,14 +173,14 @@ msgid "Connected" msgstr "Conectado" msgid "Connecting" -msgstr "" +msgstr "Conectando" #, python-format msgid "Connecting to %s" msgstr "Conectando a %s" msgid "Connection failed" -msgstr "" +msgstr "Conexão falhou" msgid "Console" msgstr "Console" @@ -189,10 +189,10 @@ msgid "Cooldown" msgstr "Resfriando" msgid "Couldn't add network" -msgstr "" +msgstr "Não foi possível adicionar rede" msgid "Current" -msgstr "" +msgstr "Atual" msgid "Current percentage and graph line" msgstr "Porcentagem atual e linha do gráfico" @@ -204,7 +204,7 @@ msgid "Date" msgstr "Data" msgid "Delete" -msgstr "" +msgstr "Deletar" msgid "Delete Directory?" msgstr "Deletar Diretório?" @@ -219,14 +219,14 @@ msgid "Disable for 12hs with am / pm" msgstr "Desativar por 12 horas com AM/PM" msgid "Disconnect" -msgstr "" +msgstr "Desconectar" msgid "Distance (mm)" msgstr "Distância (mm)" #, python-format msgid "Do you want to forget or disconnect %s?" -msgstr "" +msgstr "Você quer esquecer ou desconectar %s?" #, python-format msgid "Do you want to recover %s?" @@ -260,13 +260,13 @@ msgid "Error: Couldn't get a position to probe" msgstr "Erro: Não foi possível obter uma posição para sondar" msgid "Estimated Time" -msgstr "" +msgstr "Tempo estimado" msgid "Estimated Time Method" msgstr "Método de Tempo Estimado" msgid "Example" -msgstr "" +msgstr "Exemplo" msgid "Exclude Object" msgstr "Excluir Objeto" @@ -287,10 +287,10 @@ msgid "Extrusion -" msgstr "Extrusão -" msgid "Failed to delete connection" -msgstr "" +msgstr "Falha ao deletar conexão" msgid "Failed to initialize" -msgstr "" +msgstr "Falha ao inicializar" msgid "Failed, adjust position first" msgstr "Falha, primeiro ajuste a posição" @@ -299,7 +299,7 @@ msgid "Fan" msgstr "Ventilador" msgid "Filament" -msgstr "" +msgstr "Filamento" msgid "Filament Used" msgstr "Filamento Utilizado" @@ -347,16 +347,16 @@ msgid "For mouse control or to verify touchscreen accuracy" msgstr "" msgid "Forget" -msgstr "" +msgstr "Esquecer" msgid "Full Update" msgstr "Atualização Completa" msgid "Gcodes" -msgstr "" +msgstr "Gcodes" msgid "Getting IP address" -msgstr "" +msgstr "Obtendo endereço IP" msgid "Go Back" msgstr "Retornar" @@ -410,7 +410,7 @@ msgid "Input Shaper" msgstr "Modelagem de Entrada (Input Shaper)" msgid "Insufficient privileges" -msgstr "" +msgstr "Privilégios insuficientes" msgid "Interface" msgstr "Interface" @@ -422,7 +422,7 @@ msgid "Invalid password" msgstr "Senha Inválida" msgid "Invalid temperature" -msgstr "" +msgstr "Temperatura inválida" msgid "Inversely affects the icon size" msgstr "Afeta inversamente o tamanho do ícone" @@ -443,7 +443,7 @@ msgid "It's possible that the configuration is not correct" msgstr "É possível que a configuração não esteja correta" msgid "Job Status" -msgstr "" +msgstr "Status do job" msgid "Klipper Restart" msgstr "Reiniciar Klipper" @@ -476,13 +476,13 @@ msgid "Large" msgstr "Grande" msgid "Last Duration" -msgstr "" +msgstr "Última duração" msgid "Last Used" msgstr "Usado pela Última Vez" msgid "Layer Height" -msgstr "" +msgstr "Altura da camada" msgid "Layer:" msgstr "Camada:" @@ -503,7 +503,7 @@ msgid "Loading..." msgstr "Carregando..." msgid "Lock" -msgstr "" +msgstr "Trava" msgid "Lost Connection to Moonraker" msgstr "Conexão perdida com o Moonraker" @@ -533,7 +533,7 @@ msgid "Max Velocity" msgstr "Velocidade Max." msgid "Max:" -msgstr "" +msgstr "Max:" msgid "Maximum" msgstr "Máximo" @@ -551,7 +551,7 @@ msgid "Medium" msgstr "Médio" msgid "Memory" -msgstr "" +msgstr "Memória" msgid "Menu" msgstr "Menu" @@ -560,7 +560,7 @@ msgid "Minimum Cruise Ratio" msgstr "Taxa Mínima de Deslocamento" msgid "Minimum:" -msgstr "" +msgstr "Mínimo:" msgid "Modified" msgstr "Modificado" @@ -584,13 +584,13 @@ msgid "Network" msgstr "Rede" msgid "Network connected" -msgstr "" +msgstr "Rede conectada" msgid "Network disconnected" -msgstr "" +msgstr "Rede desconectada" msgid "Network not found" -msgstr "" +msgstr "Rede não encontrada" msgid "Never" msgstr "Nunca" @@ -602,7 +602,7 @@ msgid "No elegible macros:" msgstr "Macros não aceitas:" msgid "No info available" -msgstr "" +msgstr "Sem informação disponível" msgid "No mesh has been loaded" msgstr "Nenhuma malha foi carregada" @@ -626,10 +626,10 @@ msgid "Notifications" msgstr "Notificações" msgid "Nozzle diameter" -msgstr "" +msgstr "Diâmetro do bico" msgid "Only for the move panel" -msgstr "" +msgstr "Somente para o painel de movimentação" #, python-format msgid "Outdated by %d" @@ -644,7 +644,7 @@ msgid "Part Fan" msgstr "Ventilador da Peça" msgid "Password" -msgstr "" +msgstr "Senha" msgid "Password saved" msgstr "Senha salva" @@ -665,7 +665,7 @@ msgid "Please recompile and flash the micro-controller." msgstr "Por favor recompile e grave o microcontrolador." msgid "Please wait" -msgstr "" +msgstr "Favor aguardar" msgid "Power" msgstr "Ligar" @@ -813,7 +813,7 @@ msgid "Show Scrollbars Buttons" msgstr "Mostrar Botões das Barras de Rolagem" msgid "Show cursor" -msgstr "" +msgstr "Mostrar cursor" msgid "Show only devices that are able to be set" msgstr "Mostrar apenas dispositivos que podem ser configurados" @@ -834,7 +834,7 @@ msgid "Small" msgstr "Pequeno" msgid "Smooth time" -msgstr "" +msgstr "Tempo de suavização (Smooth time)" msgid "Speed (mm/s)" msgstr "Velocidade (mm/s)" @@ -865,6 +865,7 @@ msgstr "Iniciando atualização para" msgid "Swaps buttons if they are on top of each other, affects other panels" msgstr "" +"Inverte os botões se estiverem em cima um do outro, afeta outros painéis" msgid "System" msgstr "Sistema" @@ -876,7 +877,7 @@ msgid "System Shutdown" msgstr "Desligar Sistema" msgid "System:" -msgstr "" +msgstr "Sistema:" msgid "Temp (°C)" msgstr "Temp (°C)" @@ -885,22 +886,22 @@ msgid "Temperature" msgstr "Temperatura" msgid "Temperature too low to extrude" -msgstr "" +msgstr "Temperatura muito baixa para extrusão" msgid "The system doesn't meet the minimum requirement" -msgstr "" +msgstr "O sistema não possui os requisitos mínimos" msgid "This panel supports up-to 9 screws in a 3x3 Grid" msgstr "Este painel suporta até 9 parafusos em uma grade 3x3" msgid "This will affect screw positions and mesh graph" -msgstr "" +msgstr "Isso irá afetar a posição dos parafusos e o gráfico mesh" msgid "Timeout for screen black-out or power-off" msgstr "Tempo limite para tela apagar ou desligar" msgid "Timeout for screen black-out or power-off during printing" -msgstr "" +msgstr "Timeout para escurecimento ou desligamento da tela durante a impressão" msgid "Total:" msgstr "Total:" @@ -909,16 +910,16 @@ msgid "Unknown Heater" msgstr "Aquecedor Desconhecido" msgid "Unknown security type" -msgstr "" +msgstr "Tipo de segurança desconhecido" msgid "Unload" msgstr "Descarregar" msgid "Unlock" -msgstr "" +msgstr "Destravar" msgid "Unlock failed" -msgstr "" +msgstr "Destravamento falhou" msgid "Unretract Extra Length" msgstr "Comprimento Extra da inversão de retração" @@ -939,13 +940,13 @@ msgid "Useful for un-responsive touchscreens" msgstr "Útil para telas sensíveis ao toque não responsivas" msgid "User" -msgstr "" +msgstr "Usuário" msgid "WebRTC is not supported by the backend trying Stream" msgstr "WebRTC não é suportado pelo backend de transmissão" msgid "Working" -msgstr "" +msgstr "Trabalhando" msgid "XY Move Speed (mm/s)" msgstr "Velocidade de Movimentação XY (mm/s)" @@ -975,11 +976,11 @@ msgstr[1] "comprometimentos" msgid "day" msgid_plural "days" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "dia" +msgstr[1] "dias" msgid "g" -msgstr "" +msgstr "g" msgid "hour" msgid_plural "hours" @@ -1010,12 +1011,12 @@ msgid "mm³/s" msgstr "mm³/s" msgid "s" -msgstr "" +msgstr "s" msgid "second" msgid_plural "seconds" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "segundo" +msgstr[1] "segundos" #~ msgid "Hide temp." #~ msgstr "Esconder temp." diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo index dcbd951c3fde480d8b074930d9293d70fb20fa92..3a4a416e4b12e66a56f87544cb8e281d429c80e4 100644 GIT binary patch delta 7342 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 V%T@NYXD65MW5#pc=LZb-{|}yYXh{G7 delta 6970 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 P1P_1E*K=UR?Y{p5Tv@<~ diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po index 4051f53d7..ff16daad9 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-11-26 12:31-0300\n" -"PO-Revision-Date: 2024-12-02 18:00+0000\n" -"Last-Translator: Eugen Fleischhauer \n" +"PO-Revision-Date: 2025-01-31 11:01+0000\n" +"Last-Translator: gfbdrgng \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.9-dev\n" +"X-Generator: Weblate 5.10-dev\n" "X-Poedit-Flags-xgettext: --add-comments\n" #, python-format @@ -246,7 +246,7 @@ msgid "Error" msgstr "Ошибка" msgid "Error clearing active spool" -msgstr "" +msgstr "Ошибка при очистке активной катушки" msgid "Error getting active spool" msgstr "Ошибка при получении активной катушки" @@ -426,7 +426,7 @@ msgid "Invalid temperature" msgstr "Недопустимая температура" msgid "Inversely affects the icon size" -msgstr "" +msgstr "Обратное влияние на размер иконки" msgid "Invert X" msgstr "Инверсия X" @@ -503,7 +503,7 @@ msgid "Loading..." msgstr "Загрузка..." msgid "Lock" -msgstr "" +msgstr "Замок" msgid "Lost Connection to Moonraker" msgstr "Потеряно соединение с Moonraker" @@ -645,7 +645,7 @@ msgid "Part Fan" msgstr "Вентилятор обдува детали" msgid "Password" -msgstr "" +msgstr "Пароль" msgid "Password saved" msgstr "Пароль сохранен" @@ -835,7 +835,7 @@ msgid "Small" msgstr "Маленький" msgid "Smooth time" -msgstr "" +msgstr "Ровное время" msgid "Speed (mm/s)" msgstr "Скорость (мм/с)" @@ -918,10 +918,10 @@ msgid "Unload" msgstr "Выгрузить" msgid "Unlock" -msgstr "" +msgstr "Разблокировать" msgid "Unlock failed" -msgstr "" +msgstr "Разблокировка не удалась" msgid "Unretract Extra Length" msgstr "Дополнительная длина подачи перед возобновлением печати" @@ -984,8 +984,9 @@ msgstr[0] "день" msgstr[1] "дней" msgstr[2] "дней" +#, fuzzy msgid "g" -msgstr "" +msgstr "g" msgid "hour" msgid_plural "hours" diff --git a/ks_includes/locales/stats/nl.json b/ks_includes/locales/stats/nl.json new file mode 100644 index 000000000..c60a912b3 --- /dev/null +++ b/ks_includes/locales/stats/nl.json @@ -0,0 +1,5 @@ +{ + "language_name": "Dutch", + "translated_percent": "99.6", + "filename": "ks_includes/locales/nl/LC_MESSAGES/KlipperScreen.po", +} \ No newline at end of file diff --git a/ks_includes/locales/stats/pt_BR.json b/ks_includes/locales/stats/pt_BR.json new file mode 100644 index 000000000..21a23003f --- /dev/null +++ b/ks_includes/locales/stats/pt_BR.json @@ -0,0 +1,5 @@ +{ + "language_name": "Portuguese (Brazil)", + "translated_percent": "99.0", + "filename": "ks_includes/locales/pt_BR/LC_MESSAGES/KlipperScreen.po", +} \ No newline at end of file diff --git a/ks_includes/locales/stats/ru.json b/ks_includes/locales/stats/ru.json index b1987ba80..9fc495de1 100644 --- a/ks_includes/locales/stats/ru.json +++ b/ks_includes/locales/stats/ru.json @@ -1,5 +1,5 @@ { "language_name": "Russian", - "translated_percent": "97.5", + "translated_percent": "99.6", "filename": "ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po", } \ No newline at end of file diff --git a/ks_includes/locales/tr/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/tr/LC_MESSAGES/KlipperScreen.mo index 3aecc8b9a85252c9b7c20a88afbf87446558bb54..6969025aa0a5ecf4dbc244f42f4a1166f8d1da2c 100644 GIT binary patch delta 212 zcmXZVy$-=(6vpw>4$}9PViOZ4f;9aKHYSt7E!Y^45Q9lvLnB>kFfo$OCN{1|V)K`n ze$P2MPfijWNo-t(dV4fPX0Aw8MDo6fjUE=Thjkob2{))PLX8Ks@Qhi!Vg_%2AJ|}i zVu)}2-8BOdUP>nrM_Pmli#G1Dk1y<^P0PUnmT{eabgpK4Zff~EQ{7L~d1bX&j?*Yq F#V?XrA36X4 delta 212 zcmXZVp$fuK6vpv$4dSjkY+}=-3>jk^LyK5!17E@+B1_(26JJ4vl?9u1aI4Lx&ttIp z7fiqJ9L~on3sn}XO7-EYMDjpnAR=xk(#8NgIKvSxv4?wf@PrymY~T%>SYaLSe;?>E zKQYEP{_ebpADBeq%b2ick>CaA_`(UcX!*FnJ{tSc?odsw6CP`NXR\n" "Language-Team: Turkish \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.9-dev\n" +"X-Generator: Weblate 5.10-dev\n" #, python-format msgid "%s will be updated to version" @@ -83,7 +83,7 @@ msgid "Are you sure you wish to shutdown the system?" msgstr "Sistemi kapatmak istediğinizden emin misiniz?" msgid "Asks for confirmation before stopping" -msgstr "Durmadan önce onay istemektedir" +msgstr "Durmadan önce onay için sorar" msgid "Auto" msgstr "Otomatik" From d69ab715069af35a8635ef5b393dbeea6cc170cb Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 12:43:51 +0300 Subject: [PATCH 093/127] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D1=83?= =?UTF-8?q?=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D1=80=D0=B0=D0=B1=D0=BE=D1=87?= =?UTF-8?q?=D0=B5=D0=B3=D0=BE=20=D0=BF=D1=80=D0=BE=D1=81=D1=82=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D1=81=D1=82=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/defaults.conf | 23 +++++++------ config/main_menu.conf | 77 +++++++++++++++++++++--------------------- config/print_menu.conf | 40 +++++++++++----------- 3 files changed, 72 insertions(+), 68 deletions(-) diff --git a/config/defaults.conf b/config/defaults.conf index 0c36d3f21..b33123050 100644 --- a/config/defaults.conf +++ b/config/defaults.conf @@ -5,23 +5,26 @@ [main] [preheat PLA] -bed = 40 -extruder = 195 +bed = 60 +extruder = 215 +extruder1 = 215 -[preheat ABS] -bed = 90 -extruder = 220 +[preheat TPU] +bed = 65 +extruder = 225 +extruder1 = 225 [preheat PETG] bed = 80 -extruder = 240 +extruder = 235 +extruder1 = 235 -[preheat FLEX] -bed = 0 -extruder = 210 +[preheat ABS] +bed = 110 +extruder = 245 +extruder1 = 245 [include main_menu.conf] [include splash_menu.conf] [include print_menu.conf] - [include move_menu.conf] diff --git a/config/main_menu.conf b/config/main_menu.conf index fbc4928e5..c669915ed 100644 --- a/config/main_menu.conf +++ b/config/main_menu.conf @@ -2,6 +2,7 @@ # DO NOT EDIT THIS FILE USE KlipperScreen.conf # + [menu __main] name: {{ gettext('Main Menu') }} @@ -50,15 +51,15 @@ icon: bed-mesh panel: bed_mesh enable: {{ 'bed_mesh' in printer.config_sections }} -[menu __main more zoffset] -name: {{ gettext('Z Calibrate') }} -icon: z-farther -panel: zcalibrate +# [menu __main more zoffset] +# name: {{ gettext('Z Calibrate') }} +# icon: z-farther +# panel: zcalibrate -[menu __main more limits] -name: {{ gettext('Limits') }} -icon: fine-tune -panel: limits +# [menu __main more limits] +# name: {{ gettext('Limits') }} +# icon: fine-tune +# panel: limits [menu __main more fan] name: {{ gettext('Fan') }} @@ -66,11 +67,11 @@ icon: fan panel: fan enable: {{ printer.fans.count > 0 }} -[menu __main more led] -name: {{ gettext('Leds') }} -icon: light -panel: led -enable: {{ printer.leds.count > 0 }} +# [menu __main more led] +# name: {{ gettext('Leds') }} +# icon: light +# panel: led +# enable: {{ printer.leds.count > 0 }} [menu __main more macros] name: {{ gettext('Macros') }} @@ -78,17 +79,17 @@ icon: custom-script panel: gcode_macros enable: {{ printer.gcode_macros.count > 0 }} -[menu __main more pins] -name: {{ gettext('Pins') }} -icon: hashtag -panel: pins -enable: {{ printer.output_pins.count > 0 or printer.pwm_tools.count > 0 }} +# [menu __main more pins] +# name: {{ gettext('Pins') }} +# icon: hashtag +# panel: pins +# enable: {{ printer.output_pins.count > 0 or printer.pwm_tools.count > 0 }} -[menu __main more power] -name: {{ gettext('Power') }} -icon: shutdown -panel: power -enable: {{ moonraker.power_devices.count > 0 }} +# [menu __main more power] +# name: {{ gettext('Power') }} +# icon: shutdown +# panel: power +# enable: {{ moonraker.power_devices.count > 0 }} [menu __main more camera] name: {{ gettext('Camera') }} @@ -106,21 +107,21 @@ name: {{ gettext('Update') }} icon: refresh panel: updater -[menu __main more input_shaper] -name: {{ gettext('Input Shaper') }} -icon: move -panel: input_shaper -enable: {{ 'input_shaper' in printer.config_sections }} - -[menu __main more save] -name: {{ gettext('Save Config') }} -icon: complete -method: printer.gcode.script -params: {"script":"SAVE_CONFIG"} -confirm: - {{ gettext('Save configuration?') }} - - {{ gettext('Klipper will reboot') }} +# [menu __main more input_shaper] +# name: {{ gettext('Input Shaper') }} +# icon: move +# panel: input_shaper +# enable: {{ 'input_shaper' in printer.config_sections }} + +# [menu __main more save] +# name: {{ gettext('Save Config') }} +# icon: complete +# method: printer.gcode.script +# params: {"script":"SAVE_CONFIG"} +# confirm: +# {{ gettext('Save configuration?') }} + +# {{ gettext('Klipper will reboot') }} [menu __main more settings] name: KlipperScreen diff --git a/config/print_menu.conf b/config/print_menu.conf index 42baf82d0..5ba931006 100644 --- a/config/print_menu.conf +++ b/config/print_menu.conf @@ -29,17 +29,17 @@ icon: extrude panel: extrude enable: {{ printer.extruders.count > 0 }} -[menu __print power] -name: {{ gettext('Power') }} -icon: shutdown -panel: power -enable: {{ moonraker.power_devices.count > 0 }} - -[menu __print led] -name: {{ gettext('Leds') }} -icon: light -panel: led -enable: {{ printer.leds.count > 0 }} +# [menu __print power] +# name: {{ gettext('Power') }} +# icon: shutdown +# panel: power +# enable: {{ moonraker.power_devices.count > 0 }} + +# [menu __print led] +# name: {{ gettext('Leds') }} +# icon: light +# panel: led +# enable: {{ printer.leds.count > 0 }} [menu __print macros] name: {{ gettext('Macros') }} @@ -59,10 +59,10 @@ name: {{ gettext('Console') }} icon: console panel: console -[menu __print limits] -name: {{ gettext('Limits') }} -icon: fine-tune -panel: limits +# [menu __print limits] +# name: {{ gettext('Limits') }} +# icon: fine-tune +# panel: limits [menu __print network] name: {{ gettext('Network') }} @@ -86,8 +86,8 @@ icon: info panel: system enable: {{ moonraker_connected }} -[menu __print pins] -name: {{ gettext('Pins') }} -icon: hashtag -panel: pins -enable: {{ printer.output_pins.count > 0 or printer.pwm_tools.count > 0 }} +# [menu __print pins] +# name: {{ gettext('Pins') }} +# icon: hashtag +# panel: pins +# enable: {{ printer.output_pins.count > 0 or printer.pwm_tools.count > 0 }} From 69efd51229d30d33f2e61501662cda9d1de6fc84 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 12:47:05 +0300 Subject: [PATCH 094/127] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D1=83?= =?UTF-8?q?=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D1=80=D0=B0=D0=B1=D0=BE=D1=87?= =?UTF-8?q?=D0=B5=D0=B3=D0=BE=20=D0=BF=D1=80=D0=BE=D1=81=D1=82=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D1=81=D1=82=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/defaults.conf | 2 +- config/main_menu.conf | 8 +-- config/move_menu.conf | 107 ++++++++++++++++++++++++++++++++++------ config/print_menu.conf | 2 +- config/splash_menu.conf | 2 +- 5 files changed, 97 insertions(+), 24 deletions(-) diff --git a/config/defaults.conf b/config/defaults.conf index b33123050..afc07b4bc 100644 --- a/config/defaults.conf +++ b/config/defaults.conf @@ -27,4 +27,4 @@ extruder1 = 245 [include main_menu.conf] [include splash_menu.conf] [include print_menu.conf] -[include move_menu.conf] +[include move_menu.conf] \ No newline at end of file diff --git a/config/main_menu.conf b/config/main_menu.conf index c669915ed..cc5992644 100644 --- a/config/main_menu.conf +++ b/config/main_menu.conf @@ -2,7 +2,6 @@ # DO NOT EDIT THIS FILE USE KlipperScreen.conf # - [menu __main] name: {{ gettext('Main Menu') }} @@ -153,9 +152,4 @@ enable: {{ moonraker.spoolman }} name: {{ gettext('System') }} icon: info panel: system -enable: {{ moonraker_connected }} - -[menu __main more fine_tune] -name: {{ gettext('Fine Tuning') }} -icon: fine-tune -panel: fine_tune \ No newline at end of file +enable: {{ moonraker_connected }} \ No newline at end of file diff --git a/config/move_menu.conf b/config/move_menu.conf index 1ba8a9927..e24fe6345 100644 --- a/config/move_menu.conf +++ b/config/move_menu.conf @@ -2,46 +2,125 @@ # DO NOT EDIT THIS FILE USE KlipperScreen.conf # +[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 homex] 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"} - -[menu move homing homeall] -name: {{ gettext('Home All') }} -icon: home -method: printer.gcode.script -params: {"script":"G28"} - -[menu move homing homexy] -name: {{ gettext('Home XY') }} -icon: home -method: printer.gcode.script -params: {"script":"G28 X Y"} +active: {{ 'z' in printer.homed_axes }} [menu move homing quad_gantry_level] name: {{ gettext('Quad Gantry Level') }} icon: home-z method: printer.gcode.script params: {"script":"QUAD_GANTRY_LEVEL"} -enable: {{ 'QUAD_GANTRY_LEVEL' in printer.available_commands }} +enable: {{ 'quad_gantry_level' in printer.config_sections }} + +[menu move homing bed_alignment] +name: {{ gettext('Z Tilt') }} +icon: z-tilt +method: printer.gcode.script +params: {"script":"G34"} +enable: {{ 'quad_z_tilt_adjust' in printer.gcode_macros.list }} [menu move homing Z-Tilt] name: {{ gettext('Z Tilt') }} icon: z-tilt method: printer.gcode.script params: {"script":"Z_TILT_ADJUST"} -enable: {{ 'Z_TILT_ADJUST' in printer.available_commands }} +enable: {{ 'z_tilt' in printer.config_sections }} + +[menu move homing bed_mesh_calibrate] +name: {{ gettext('Bed calibrate') }} +icon: bed-mesh +method: printer.gcode.script +params: {"script":"G29"} +enable: {{ 'G29' in printer.gcode_macros.list }} + +[menu move homing z_min] +name: {{ gettext('Bed Up') }} +icon: arrow-up +method: printer.gcode.script +params: {"script":"G1 Z5 F1200"} + +[menu move homing z_max] +name: {{ gettext('Bed Down') }} +icon: arrow-down +method: printer.gcode.script +params: {"script":"Z_MAX"} +enable: {{ 'Z_MAX' in printer.gcode_macros.list }} + +[menu move homing pid_calibrate_hotend] +name: {{ gettext('Autocalibration of PID hotend') }} +icon: extruder +method: printer.gcode.script +params: {"script":"PID_CALIBRATE_HOTEND"} +enable: {{ 'PID_CALIBRATE_HOTEND' in printer.gcode_macros.list }} +confirm: + {{ gettext('After confirmation, the PID hotend autocalibration will begin') }} + +[menu move homing pid_calibrate_hotend0] +name: {{ gettext('Autocalibration of PID 1st head') }} +icon: extruder-1 +method: printer.gcode.script +params: {"script":"PID_CALIBRATE_HOTEND0"} +enable: {{ 'PID_CALIBRATE_HOTEND0' in printer.gcode_macros.list }} +confirm: + {{ gettext('After confirmation, the autocalibration of PID 1st head will begin') }} + +[menu move homing pid_calibrate_hotend1] +name: {{ gettext('Autocalibration of PID 2nd head') }} +icon: extruder-2 +method: printer.gcode.script +params: {"script":"PID_CALIBRATE_HOTEND1"} +enable: {{ 'PID_CALIBRATE_HOTEND1' in printer.gcode_macros.list }} +confirm: + {{ gettext('After confirmation, the autocalibration of PID 2nd head will begin') }} + +[menu move homing pid_calibrate_bed] +name: {{ gettext('Autocalibration of PID bed') }} +icon: bed +method: printer.gcode.script +params: {"script":"PID_CALIBRATE_BED"} +enable: {{ 'PID_CALIBRATE_BED' in printer.gcode_macros.list }} +confirm: + {{ gettext('After confirmation, the PID bed autocalibration will begin') }} + +[menu move homing calibrate_z-offset] +name: {{ gettext('Autocalibration of Z-offset of the 2nd head') }} +icon: toolchanger +method: printer.gcode.script +params: {"script":"Zoffset"} +enable: {{ 'Zoffset' in printer.gcode_macros.list }} +confirm: + {{ gettext('After confirmation, the autocalibration of the 2nd head offset will begin') }} + +[menu move homing unsave_lower_bed] +name: {{ gettext('Bed Down 10mm') }} +icon: arrow-down +method: printer.gcode.script +params: {"script":"UNSAFE_LOWER_BED"} +enable: {{ 'UNSAFE_LOWER_BED' in printer.gcode_macros.list }} +confirm: + {{ gettext('Make sure that moving the bed 10mm down will be safe for the printer!') }} \ No newline at end of file diff --git a/config/print_menu.conf b/config/print_menu.conf index 5ba931006..31262ad9e 100644 --- a/config/print_menu.conf +++ b/config/print_menu.conf @@ -90,4 +90,4 @@ enable: {{ moonraker_connected }} # name: {{ gettext('Pins') }} # icon: hashtag # panel: pins -# enable: {{ printer.output_pins.count > 0 or printer.pwm_tools.count > 0 }} +# enable: {{ printer.output_pins.count > 0 or printer.pwm_tools.count > 0 }} \ No newline at end of file diff --git a/config/splash_menu.conf b/config/splash_menu.conf index d53d64d13..7be459848 100644 --- a/config/splash_menu.conf +++ b/config/splash_menu.conf @@ -31,4 +31,4 @@ panel: settings name: {{ gettext('System') }} icon: info panel: system -enable: {{ moonraker_connected }} +enable: {{ moonraker_connected }} \ No newline at end of file From d6867501be6b6699b57cb8ed9c39bb7b7347a59f Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 12:48:02 +0300 Subject: [PATCH 095/127] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D1=83?= =?UTF-8?q?=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D1=80=D0=B0=D0=B1=D0=BE=D1=87?= =?UTF-8?q?=D0=B5=D0=B3=D0=BE=20=D0=BF=D1=80=D0=BE=D1=81=D1=82=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D1=81=D1=82=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/move_menu.conf | 4 ---- 1 file changed, 4 deletions(-) diff --git a/config/move_menu.conf b/config/move_menu.conf index e24fe6345..99d35c938 100644 --- a/config/move_menu.conf +++ b/config/move_menu.conf @@ -7,28 +7,24 @@ name: {{ gettext('Home All') }} icon: home method: printer.gcode.script params: {"script":"G28"} -active: {{ 'xyz' in printer.homed_axes }} [menu move homing homex] 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 quad_gantry_level] name: {{ gettext('Quad Gantry Level') }} From a31e9dd8dd8aa772d2e7c13e0e8b4d214b84dcc9 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 12:51:12 +0300 Subject: [PATCH 096/127] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20RU=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=87=D0=B5=D0=B3=D0=BE=20=D0=BF=D1=80=D0=BE=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D0=BD=D1=81=D1=82=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../locales/ru/LC_MESSAGES/KlipperScreen.mo | Bin 24090 -> 26920 bytes .../locales/ru/LC_MESSAGES/KlipperScreen.po | 425 ++++++------------ 2 files changed, 127 insertions(+), 298 deletions(-) diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo index 3a4a416e4b12e66a56f87544cb8e281d429c80e4..76b1d07bdcf0b171aea072ddb57ea24fd202b8d4 100644 GIT binary patch literal 26920 zcmchf37lM2o$oI@MD|_QOCThHRHu^wfhGa6C(>E$bXZyitGjM@m+7u*YDp)Gl8w#8 zL_$;qNeH-%qhiPc*%^^}BkE|CI*J>vPvq&~K5jU^@9%%kt);ue2i|+Wl2gBX&OOWj z{P%OJ;|nJr{(*qcTMr3>bHG=I1;N*O{@!V74T4eU1_A#Cqxm`poCO{Wz8M?=-U40( zt_Dv5KM5WI?gx(pKMx)WmcgUI=fO9CKLne=UxJgtk>>@$R50@RPv9KtzW@&dFF)VS zdlkrk!L@ubG`JN!8hkf67Q71_2R;c-1b+^W0mCo|E(Pa;qrhdp{wSEB{uNOBc?CQi z9DYF%91o5J&jhak&jROzqW>KrQwK{te$c;v5)@r!Q0x5)6n$q8cl@{r6d%WfYM%s( zKQsLMW>D+5f$DcFh)9AosC5e-mxCI&7L?rX_w}uyBK#@*rTYrvDKZvc-1 zKj!f>pw{0BiXVGG$)V)izYA&~KLj=JOW;x9uYLVb9{&z%o+C%O{%-&erG6@?`OW~( z0EdIp+a^%^YxC`0p!RVGsQK>&wa@!N^?wvR8hpm%mppz0yoUDggA>4WM!WSEfa3RC zK-vFdQ2MzVl)OF;N`Ll(@_XL_XM-<;M}reDas0gwl>BCb$AGP%=)MIMKNf@9cMg<1 z`hEMmefw%~8146h(!-6Q#yatZ~rSOz8wqkn*StF^PdZ9-xq-zcO`ftcnzq2^FjHWw}9IJ zZQzOE9iZlWKd5y+;Bk|0{{$$yJ`GB42f)$bH$nAR@}Tj@fTH7gQ2RU$6dmV+TK_^& zd>QNCPx3e&)VO9)`nJ%wzXR0x94NY%g4*9Ya60%XsBtfX;`__s3EC^$K_uc<}@`|Jy;$-vx?}CBA(vD1Epe6x|PlT7L&9 zc|Hq@zORDf(>K8p;19sdz$5q)olT(ZcPgmyH-a<4E>Lto4xR$;0Y%4GK+XGoQ0xEH zx4#T(oxg#HfJa{L=r|h0l!H@1?f*JZ^Ynp=7k7Y?-%3#P-tBQ6sChmBs{e<;i46ES zD89Wg(fRoku7tPLM}aHBIpDS6mqFzP$HL4L!I7Z$aV2;%*zDVH1r=}lz;^KcU?=!H zFb%dfIeZo@P;a=}(fJstdHxxk2JQzL5*#wg$>VBp4)qpL^LzyC1&^HU)+vB&A@~+J zA3Oo2XaR2pVPUWhoD04Pim#WmsdK<pt+NP8=I z9#{lV0yl#4w;u=J2tEs*2EG7_PrnDx1dpEL_Im+%D)mvI=9%p4Z}oT^DEqn#oC)3! zitpb6wazbm{g|n)-&vseH4+rvNsunVouKypZ=m$}G??1}h9E2q=7XAdEhxQs7-Y-A zr$Md%OYl1I&!FgS!dPV=^Fi&W6C4fR0c!jwLCv=dOn}e%_CJD%JUDWOn|}%@IjjIR z?!BP+@L^E%?gGyT%OEZw_zfuixDaNX4PF6W2eyD(=YH@w@N?h@@T(vs2Y&#ykE>?6 z^VLjH`@7fUbH4o;grB6n85DmX2S|)V!-f@nI7vz2ENZ&v|?S)INR(YG1E_hl0n?b?qmCqo|(+if_|E$@yJi0{jpt ze*Y_|b)N?%r7rmdF%$?!~1uEvX8%jqW3bKg!FhGC_fN^T7RXle+txk zUjQ!xzYC_oV1c7I0*|Mf0db+hyFvBa4r>3;gOb<0$a?TZ>K_Cz1wR3f2EPt!{lEG5M=f;iXM!iw zKGowQQ1f?#$AbN!p)B@xD7lK+zo2J ze*rb_IZ$$a5ftAKV-c+%g3`mWpy+S%m;w{j*MXD4eITJI_zQR$IN=88kGsJ!)b9l) z*C#>A`QJh5(~F?|%K10?xCO4J-V8Q?Wl;15H#s`a14Z9x@N#e_sD0cHijF%$?fdhf z=>G;NJN$`nKkQ~F?^8kbyBHLICxVjubkO(?YQO!U__75&72NOZUjwzDm%#<#5p6C$ z-2lFk`fcEu;2Kc!|0t;WN}$&J3#j#vdW)m)Oi=4w37!GAg5$v+Q1fgCr60R|{Y#+e z`6(!R|LpPTx4L=G0570@g2zQ3`$6sV!=UEd4{9GJQ1iVAN?xz{_oLtD?iVJ3(zg_- z_XY4=a0@8=d>YhzKLiBXxsQp|BYQ6EG z-cJR!pGDwVV83tQ;PGSNNwn_*rGH-p#oxb!ZvanxyIcPpQ1s3PKL{=Xwcc?AnRCH& zK&{sVYW=ys{cYfB)ZYcdn&3WgIruWz0%qIs>EJWqIPk0vd>GgaYW;^m*~=%uE5QE% zF9eUpd5O+OFbz%to4`+jqT^?v0y5uHxoW`iHrdr37!Hz1YQY#*0=v0R2(>@+wuEwa3=NhL0o?&501pSh4ITx) z03HMW%;T>?&GQ%V67X-}A)sh~0}rxceg28^ial}m0hjq_!8a(^(^v9Ypuv2`JFxFx z^W8_ej(6KY+1DXF{|l(k=P2h=mmJOj_1R4Mwmk*Gn`nbg=D&TD$?yp(l40%V7rr8y z=(C3MRm%00MSgBrXP-HIpFrC`gE`8Plqr<)zTf%apQtA((&?3y+Ry#Iawz?zJ0GG* zX1}LALy14XiXS}6&rJ1e{E+8A`}Pdcz+(CJX@{zbOsWzv*5DOTaDuxrO%m6n!>02+pD&@;sgLS>N_W5SI|(UhVUB zzK@{acfm`*qbYym`2&;_D6^>l7<>zu20uc1m{O)ZLb;uC4n?1jISBp^zRf>x_xL7{ z`rYOx|GXYNg?b(w27U*W4;st!7|Ppu9!Z%&Ihk@8ZSMw;qnyff{JD;Y_fgix4d4RG zf7aBG=lR~6x*jiJj>CQ1Ot6>oNy;kU_Bc4%uk#Sk-=mzUF_dY(&$Hltl!dg-qx`FH zzm(^jDECmmfzrmaK2KBrLK*Js%{-sX^M3Ft3gJ4~OPS-}|CQ$}D92ELGvzX#J1G5> z%c)-lUIr=##h(d0$oJnyxt21W_xk*Va=Jaav%DTNzJ3_Eld_a@HT@eY3CbDNcT>Jb zDN%|PeKt|%`gz~X^T*Z5XAh;Dav|^Dr3OB~q>Q5e1@KAAI6tlx{1J71&U0Yj&-498 z${#3a)8`Z5qZECnQ9r^x+V}t9`y$$AQugtD3FS`84C?y)fbvdza`}lKw^C+NK0~>Z zatviM<$qH2`6=ZE%8h;wwaunXr94JC$G5+qXMGk^8Yw-L|Dqhl`}yGaDW~&%5+%!X zD@C8PDOb|=4sbXny6h;T*FAHa9i@C5h-5Ui{!kKeg=H57^ zWyY;7GZwZ^X=x36lgq-+^wO}<9fj$9z8E#ot25mbF@2$%=5#*HBzvPU*^`Tssbyib zG@UQxgDKN*Y7XaR3*oeErZe4D%tfhSN_#d}2&Qy&L_JY1S%8oxtM#c-RfeTfVP7t* z1%fG^g(w$xXnd~Mx{on37R;H>wo+lTSjcuHd(!Q0u6Vy)>CCGR?amgW%>U8ofeU6k zL(wuWUkJO|`)eWKAXAKop#O_0B%I0=+0M>@FqO6E{$!>g6^oX3^b}K(Nh;g^ zj;N!cfi?Z(jy+jemJH|3xG~H{Q4i!uuTZ7T!A2A_Hb%ScDCTl>tc(crec5c!fR#jI zyjrf931{?1xvnVFu`FEZc3Vr9bx!9|>1^1M%%G!Ax%+bIK?K$IO{Me6cFdtSTgc|} zLs8%-%|-25>_OD$m*opl@2m99cNYt(Y=5S{cYbj`?9A4i1eQP(Q?jGJbfznqf>qd8 zBDM`IiMB*XPc|QgnQS55neH%i!rb&C+ZVx`rG=ctHa`s+v6tAAR2kQ3??HboSV&Na>>O}E|}Jx>}|&t&P=jscQVrz<-_i5zipoh zqg-dQBMN)6*~R%m?+f^K?5j7K&aezF9OdrmDE25KSm%t$>yA1Whvu?xOhY64REq{k z-&_F6j|uyFq9i)hpG+4T8XAIWRH06K<-Wt-D4$P?yrlW=WT@q{MfRNSWiY2w3kSL0 z0k)`S?OQatCnKWrD1MA!bG{*)2|JU72ZOsP~4!jEuQ4EM8me%l6a1 zH<^J)^2ouATrQh)-(iR3F6BrPwb6LAd}1C z0D@WBaB8w+aWFedcXbzg{WAt;9k-X30SH6;2`K*uza8 zZg%LQjT$`Dmom>_&h%go${)6NqpHE2nCIHL1@9;)XXV-pSiB`|c)?2Ih#58UzOTq; zyOTHvD*0k3VKS{8gGrXaR@@rx-rMrDgc(vXhJDF=9$#Y(B-v5VGJIest|0H+v3Qf9fa%Z_2il3?&Q2d~khFx{tkAlp(Im?N!|i z8d>{-Y${t6Qb@V;9Y2ynM1VvS6()UhOYn7DR&w;$f*uSbO-gh8v=uY)87VOqC{mDQ^kp66clMTT&EP zZmKlj%u_0D{m@g!8pSvj#)i{!#WYDmi}Wp+>l&Fkn|sE<>8_>(N)p%y?fuZ!gBN6o_Z8J%eleC!;zwPm%_HT$J~RU1 zrt{3e(T$u%(k8C^oG?B?^R`=W@GmY~qM?$`lc{utva4m9rP8c9rG0P>UO`hZKZAEt z<{@1{vrw3%(!lu~I#3vFXjwQS6)aeIy?O-;@a0OCVpa3^3328-=t5-YJIp zq>hd5U}4`>NL#Zcg2}K`L8aJ77M3DWT9D=%V1Y|CmACZv;d{-%JA0Bko{8o(f=S@m z3Ob(P-{S$wOoIh7IrnYH8719nP;8P?Pf0CNMm4CRsoIjPbYU#be9OYMoU7S1Cz#R=%B-YVJyE8M zb5OOR-(t8Lq$e3~Xf2TtsUH1#bVg~L^`R!Kbm`YZ0&=jBv{dPg9u(A=m*bgz5lk#ZJDpT> z$c!j0PCp+`Efxy8^|JP?tTGiXNq0ob8HnCVl+}`Q{2uB<{!CAIF%Vc*wy=lJxxhhF zu&@`m!Z+6p*oiLmjFCDzjLnbsl}kM)95U**q86H#&1DFFm3Tl_kV&;K3qUeM`<8;p zB=MEzKdPTvZ`}LFvKoM zJcO|}xz@1C1MAfki1*>BXSPloZI8NJ#Lk0OJcYYyAyh_r9SVCRMCCk)3s$-4wjvJO zjySEl%j_&>>?%@;66tNaD}z5&+>!d@t7N!TZH~H7#BvNVM;d$dJYFq9=c~-sqc?=E zWH@2zgm6}l)X@f*Q*}IWy(&io(j>AP3o~{=4Wy5prOk8a-7&2l!&{tCBi`K7K;4eK z_MTy?Xa_k<7-VFv?vSx4vpA#d!f9_1SMw3~ZX^p~VOd{9tD+u|^X6T73jLwV8FsbV z+4Z8nur(Xn+1Vc@475C17}3CXSj;4H5hu$`UPsJAw%F0_Hk}V{jM`gTr^TtP51%e< zNiOa1L^r(tP`R+c#dL3QqYJ9RO*e;fTVb7P&{$W$nVUo1d}DRhqiLNA$Uc?H`de=# zJA_KKh4Fn+6toSoY+L=RZMdAC0zKUgS5rXrBjfat4^qixD*2!*AlJ>=S3YoAit`va zrEny^9p`+jUBtuGku`~O+}YhWxQl!9)G}>r9C>Sfe>-{v{saZ zd_o%16pn8ke_3MOxWxD?xF~6wFfP$Jp|O#Ui56U?PUh8qmnRy>CmOBa<&BqGKV|xf z)?6}^=f;a;Uf9*yp2~Hx+ezJ-WVSQv%Jf~=-IL;o7d61{Ylg)~g+wb_(-gK8IZtu2 znbch<^yQnzj_oGfk5Uc&5w=%|8aNk^?Q`4Bk6rAJP)<(=)N;kK)ybQ}TyfakIdf-J z`7^GeahOsJPMnEW%&RFZaC#X_XiaCX4m-Mu7g1sIqSl#-E35sqF@kww2FEZR44c9$ z+tY<%3wk))^dx4IU*(&^OrKTrlP6rw4W8ai9+ep}u5t3@apA=mhk9(hVDh+e;k997 zNO$VjOdcP9wP@mDZJ|{pB^K-TGN8u{12-P2&oi z;6Q12SYBN^P+nfzN8`$%w1JLK^KLJLcQJ5hNR^pc=_zL1&TOlA+EZS|3z`p;YFd;n;K+;wQ?}C#eUEJMj*E2?fgtPS@x5S;0j@%&& z<@tv#GcJMZmA13Hz1m@U%|C3V@&8{|dS?Q*tw!d^5@8Lo=mx!HmxHxyP!ozRHI-^h zRnQ{;+hl1^D0Ri0@8T88XPUC_+99TW)j7;^QQ(~#$$Zkcry9^d%==De-DZwJX6CdO zGRkXW`wruVevS%4?gc*1`Ch9xiPvZ74lfdR+UK zBUy#Nk@In;2H9rL;`!@Y34N=$GPjbcJQJ7irL6mZx*GhE4a+^_E1lPq=YZL;dN-`K z6>%8a1_C#WFRzL>RL5;GzQ%)v<@bpx@-jQkuj5nWaj!*qnr?vbc9>pm7q<~1UTDbq zyssai3qyqp&tD>wZP2`YJZ0V1B$NTPNKbdcASfv>XV8b>kLfNv^_*0k8N$6f&+7u$ z4q|3Ka~ZQcD81i#+scDfY@pk%zLa+EL52!xGD&9~3cd)$BC(`d?Qg8D>F+glT{yh- z878v0#2intk@dq}9NZ;2Znegp)rp+3YUx!bEu8X$RYDuwA6pD|a)bH|;gbgSF*f-C zGx%kFXlSc(c|$q8El|r;N=@X%o(f6>TPy-{YYS`k1*OLjwiyZnU#r+|!xe+JAb#oT z*80}!{LZ@W9KaZjfNLuiTsA3O*S)v3=;5*g9_mCdJG7+fAY&dJ(4Qp5^_1UUu2~;8 z4}Aau?_;SaW!LD8Z7Vi%ufixko`F<>988)4v&e*0BOBSoE^7>aP(z*R*S=NgI8fW* zXp-I%*u_z3A?Gjysy96MVh=~N__ubPuwsBTe{Xrc7%$B>H!12=2}%#xUbU`@Y{W#r zlg+7#V6TQm=MAaz~||`rQMG zDG*A1O}@@+dC#HTP)^LMFvD-oTs4!_x)MB$c59h8d~;hmOUy+A+6}=DQ{_0{3 z-N?5Fxx~fkrq>^lDI{~f! zHRRaQhZi#Y0l^SALZcbpQ18c$fAy2ypc!RuvMF=4<@K@|_CE^y**Dr}ZFTWkjDZE( zm&}(f)^oyk%xvpX33gyR|TC-%E{0!9|$THr#-gA*qZl9JG^gVR^@4!6a%Hf zOk*LSWZme_z1kL(aO`v79B#oVD@*+bk3*>S1k!VZxZiMX)+C=$|ria88{f{U29+u64TAH;c=hWgOT z%umbEn8fU*=0dAR%B=i|&4)uP?Qk_1WT{VBzK2D2ar(Capz!Y9q~oStl4LA~snZZl(++cxZeO3bP@XgVy7-AdyIzqx71 z#+!#~9kQ`4D1FR@1k{XddA&P`DwJ*2Up~3L8G9kJl54u??&S?Hd=hMFo8)G1n4{_# z%?2yia5`ykX2Ff2cXG&JgRVp1wTlOqknVO&H3R334_(ab)RQz=p-I=KGCw7-mcBeN zFeP>qxGNZc7{O&QOcJvO6DbvQXr^vdV7{n<{i2@8ZaFjdU=FpSwmis2?sm4p;%;I@ zrbvZ^1~wsyflbI^gJY_0Lha<@w~NA|r8?6b;2sNdWQKJ!Y&K3jT9S2RKCK8>#iPz6T2?3NWEFvdy0WfX25%*n*OHr9ihD{^Ak z5ERhSViidwQ;Qcm`$O~roq)FJp|l(0+hPJ0rxaSfN8RLvX1zH;&~1}T_cbf}?!qJU z$mF-1q!eYPX9MF{eIIf?a~0Y!J7T1=W}=^N_y$CG8f(wb4DsBtWn>HRM*hy;1hQlWQ)R zjb)M+NrXHFzi2TVKfCzL8)Z%U35ZM*N>|vn*^uRV&YAh+d}-?i^1i!DPshYo?lbBd zAR86ZJeFWGC3efkDrt(_sdFiDUj_C`PxC0!B;OM`*NnmZNbmiX1d{TnevB5*<0WJU zCVEUwF=}8>^M5|V`@uJ(Z$_b8l`k64YJ6b|6!R!ha? zk*qfkQqpu6AW|q}1HJ2aS=v=It9Hg-J;AIbmK_Kxmo+5qPqU{T74O3PTAO9F8xiZS z+MIBsj1bPq<9cry`y1sr{)Y&-A0H3n{7G-kvB&1)e!G+2ZjW^nFT74pM~STcC}4u- zq;Rcv0sr7D(-;%|!w_3Am+iXArB zk@3EM~uc-2flWvckcVcG+PSIihL!L1B4HNyR=+gBL3d_0*J*q+I<=OBN3=Dy@jw16?~)d&Dlc8TH5-Bt z!-O}R%IYM;n#y(L&Cp=k5LTx~2~69u=eioGcZ)e5^^d&nAmVjt#A!& zPR-H<`7F3m->-5{N3bKa+Wwk)ZebE#%d#0e|9IQ;Yi{y{=!XK52Wsoh&ZRgupyoXh z-M!ZtVTJTT%BT~ROW8~|#Q8Y%DZrcIuoXM+j;(V)+NupjGDktfv^lJYsmnmcuGv~}(d zq>m;A+u)!c(r){E6nc5O z{gtg#X=(`l4+eIct2DC-oPvp^ZKy_5oWVyxNN5NAxyISlJ0h%u`fitmRaZ9=K! zKjfu6tE5{}RD6#~K<13HIX=7dE&U~lDh0X^Ggb444;Jz|>|`p>fc_bWnXBdmFUQL| zcAk*q5525q<#r%YXxA1(a&#%Eg+9j!cQ-)9FcM@h zaNut!g%BeQ`Mph!8(SrN2TuE$pUZ1cp*(tO?EnXr?Uda`OG%N@+JTp@oX++!!Jw zfZEjbuv^wghcYPrWqoN2e_B7(%KffT)u`iY6kkcK&6up15qk?9>?+>#sc;=$XSTd1Nbq}F-j~$E^R-r ziYC8aZF=WYMUE_+s;8}3oI^C~{IHpsG)zW;xcuFflt4j7H=EnEE5&lo|58tU8zzfb z5tEuK$7^Qd$1`FvELY-HXUdM^*bWGcq5p>&iiS^U5+jsN4Tx~NVH6ALOy~TA*Cg4h zSfC_LjG_ktRer7R>>iW`aWS;oo??O4NF_z5{OFLn&3=7EH;F zX6JC?2w~B=;&ujc0e^;_*Te{m@D?L#-4jfJV}ov$WO5I}8EGu{5)EP7>t_tQ-S(ecDr*2Kt2&o(4XW&7O|L<@}i+`r|{%lZ_!t20Zy92f>t;9FjO}hatyx1OCz+d5k zgSz z5l<;CQ&0W@&EVM-5R?_drOHn_ZXN$d?Zi92NUCDwU)ZRHe`7@#uVO{Lb{D&XZPokv&OET*d-sn!FMoMI&oeVm`OPzPT=)K0e0!>W z!FL-+?6f$teU{Z0v!X5Q2<1gh)oNKi+E`XQ?1}YoJl4kZ_LUaW&h zF$Pa!ZF~-O-HRA+SwSmIK?8h?bupG%q+v@;!BN-^%P<)anEDHtO8p{gB8hYofmdQf z9FHw=HnzrPsEO=AEo2|oWqj*?3cB%#IdKe0g7pOIh8IyQc^w(cde_u{MP;H^d#}S- z)P1dxwOEPB3az22h2&xsZpKEq6B8NVx{rcVa@zO`@{jcff0U6Qu{o+Y&AbI_pbi*^ zDX0zyp#~U_x^EilDdw8?GVDP8W>n_x!k|`uhJsf33aXI2e`Ud8mO`q3+v&TF7qH0xMCOIfc6ZEkF5J;Q|dxZ5-26hpDIzreZTJK&|XX z)4m$@Xtta7y{OFGW7-cJPof5V4wZ=yQ49GAwHccy1icxzPViRL5o0;g6E%TMRL2ug znVN}O$sAP10;o(aLQQD7Xh(b?}|3|Bj8RM|Sj9 z-qPqtO(YqWnN(9Bj!OL~RDTmu8JlkExyJdZ`mX`{ zPnq_YQ7icrHNdy1mHv$S4n!w<_q9h2FxWWKH~|OKJ_E@>(Aq^o1D{5v{&m!Q`zi96 z+?QL=E+NU=Onp%UU4^6YTGT)xjKpfx=6nh@Q3thvw@{h+6eI8}jMV%8y*cr-Ibn73 zCKQRfFb=gjo1r>N$5uE5>);I3K)I-iT#L1_1eKX(sQcEV`rC=h+#aR0qv@8?`s?!9=Vf%Y`Gv>g&Qs2~@^>KUFzUH>6!;BQeKCv^4BXQ2AYH1*NOtFRvJ`R4p$RR3i` zbHQ43VmoT3yG?yRMpM5ZHBbn(vS(2%IE$L#JEr|(RAw%sGV&{`zo>5B!WyFPOF;D# zOr{V+p+D+_l8sv7EYt;ss19#L4HPu4H|^U|6T2PtXzs@td;&?1bsBZwMN~h3pe7WN z;$|vn#Zb_UnqUmJ!uptmN@con0P4nJs9(d;rac#R{{qwkmY^QtTFk;-sQb>LQvMNY zGk%XzdjD&udMS=UO`tjIS1SS2FcbBxuQT<7sFl5f{qdiu0s3_J1{j2z$XHbSTw@_N zpuQBffLkzD@BdB;(RdH)hH_NOj$;x&flA#cn1Sa}nej6_y}rq)6%9fyAP1F!8Q2gP zqx!uGwF%dl_RSd7KzCAbCxB$dDo6gY&hbYbG+_DqjcALSNIa^;L}NGfQBOx*pMhV} zFdX^E>Y46+G3TP6`c1eR_okD7{r>xVd7JGD)Xc}CQk0AFxC}Mm9jGtbJ{*omP>+ikEe-4G;Xiz4`^zpuEQ&1VW4zIuisEM9K zefxhxJ>$mou8AdMQ%pncoh(z&$NJQ7z!A6(HPO?kFXp+RY4{a&Vf}vIidrE})@0O5 zH=-WV%gE!m-ok-ckL9bw5vbHp!%;X7)!$*%b=9Z|{*2AB;Q;SfHkd>~yLm9Gg9WG# zmmwS5T5sBqA^%v<@@EJtEy~zX)P18-E1!-naT)5-ZNr{ej(T(-U@N?UL)m{;EYs6K z6Hu?mEvQ|;3A6Dr)JlHBVHi2cOXVozR#f|0)T3<0zg@J$`Nnmq`wyWeRF0Z}gN^n6 z|AT^3^Bd~I#w<_9qaHyDYO@sJP~44r6mOw2^)YGz7qLAi4)q?V5|k@NHB79hKR7 zq)8KQfr*%mK{e!1P{*@TnYaP9yEmKqA!8+KC1+48JBzjOGt+(^ld1oJW3U}Nw+$9z z2V95R1NWiEtr|}L^{if`L9g5A$WyRd@!{5m(~S#_x8N}K`rz()OeA>QQnEBScirbRBC!*H_Sr4o=Z^!?lI>dHtjX2 zfj>3=g6g=zXm4+{#k$nH;8aYD{s&Ga0qgIBQ!eu$b_(<{A>+Mupa zL_OPKsFcq}-M0dxaRYY2o!A{8M`iRYtgCyr&-)~EgjcEq2tA+}>jYQ-t2%v^Poq-*4f4WR4JUioPeon7z|^;)`aLw6 z{P&xq4O8#Rg9HK!JIE=~oKHiS?uJQ)lkDAzFRL5sf6L{aWe}m1aH=O4E3q~SdO??@% zChJw?A1isfm#LM=i)B3$q@W4>h^bh6hWAW+q6R8J?cQbB9dE-zd>Zw0oI2CHZUJgV zE3heU!U=c)TjF=_i@C;fXP^d-27uXfQMjtlQAC6mz+LX7tHGcI> z`(LQm=iN@SRJitfSwb&r?$tBrZ-(B^JH3?;rKc(bjQL>>2jv;LNU>P){*HxNsR zR|y@Ph^O5W|AP|mBlJG&t2dp{5lIXoULjs5babL$ZSDbX&HL@IMcdD&{-eepXeu$B zIAY2l;%`K4qJrqmxf*?q_~uxD5Z@F1iARXJ#B$~jC?k4II z&4}QC@nJn>Lk`D7PT;Dfc3NP$S3l`lIKsW30#JzpE)FaMLL~ZCck}KFfb}pnSin zcfqE_7@{Nb0kMOaLzELQ6aDC`5z&}vOZ_^c6XE{%fBkX3I>UY{n?Q-o0+oeSp6!@1G z7tJeN6tFYmx7vsOk)d>dmd{R4Xll<&=xlFExHc5gaalwU|Kg&ul7K(IXh~^t(IS6Q zvA?v)e|@01aNcrCW%&zA@{0q3CH}np{IcS_{N?tt&NJqg9Z0_5tChddw!2QZdv<#|)F|a@pIw%k8G0o3VV}Jstxf2Gv~*t`x+y6t4!zc6 zy07iO?q;ka|DvL08a;4BX>nPB-8H?hy+8dz<3&aJ3$3Y3gnwQhD=M(>>{S>swIon% zM`YyNk7i7_>-K&uIH|0pq%d!ZKY7fe!lle=vODoE(USs8i;7EAb4unH7NiaG}X z?x5Gl8M$1^(5ge@Mh~tPyp1_*)kC^;j%m_CrBYBG-WXmV-W1;ACw(W~In#kArUzC< z1B0Dn0SxHQn}$`oUHRk+%_F2Ou-U0{N3LwnR+fjW~4OSYNYL zuBvcC%!Wz1eKTLXIA?fmW^F%{lhtG|=a16u<0ey;PPH91yWOCDbjh`UTD&IAZqNoG z7mVz8r{F&Q@Jg+yihgRe3_Ek&^RZe>1@m0PCMYLo4Xy-&bPVVW83b})9vWHCRWmipkD3#@Fcas6-TThJ%p3)AlB?tg zXP=ucCDWY=6J>(zVrFr9>skM=s|Ng=%d~C(PiJ>sdOmFW;WN(q?5VTH*r#W`l(@s) zGv=lDwn>GX4eb*1u7#?vj__seXTI*fWK)@xY2WM11{y0_N(nVdClU< zm_7o0+BRNJo<6+Z_j;?nEpLv!bnZl7cl*h?ff&uAiW|0sZ?*g6C;X54g8Yp^hN=v& zHCZxUSk4amzO?(@&yVHs$zmo)c7odqI-#zX32Np6mbs diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po index ff16daad9..6c56e80e5 100644 --- a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po @@ -7,17 +7,17 @@ msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-26 12:31-0300\n" -"PO-Revision-Date: 2025-01-31 11:01+0000\n" +"PO-Revision-Date: 2025-02-06 12:50+0300\n" "Last-Translator: gfbdrgng \n" -"Language-Team: Russian \n" +"Language-Team: Russian \n" "Language: ru\n" "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%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Weblate 5.10-dev\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: Poedit 2.0.7\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 "Добавить профиль" @@ -63,7 +63,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 "Вы уверены, что хотите исключить объект?" @@ -96,7 +96,7 @@ msgid "Auto-close notifications" msgstr "Автозакрытие уведомлений" msgid "Auto-open Extrude On Pause" -msgstr "Автооткрытие меню Extrude при паузе" +msgstr "Автооткрытие меню \"Экструзия\" при паузе" msgid "Auto-scroll" msgstr "Автопрокрутка" @@ -141,10 +141,10 @@ msgid "Cannot connect to Moonraker" msgstr "Не удается подключиться к Moonraker" msgid "Changes how the interface looks" -msgstr "Меняет внешний вид интерфейса" +msgstr "Изменение внешнего вида интерфейса" msgid "Changes how the time remaining is calculated" -msgstr "Изменить расчет оставшегося времени" +msgstr "Редактировать расчет оставшегося времени" msgid "Channel" msgstr "Канал" @@ -162,13 +162,13 @@ msgid "Close" msgstr "Закрыть" msgid "Close messages after a timeout" -msgstr "Закрыть сообщения по истечении времени" +msgstr "Закрывать уведомление через время" msgid "Complete" msgstr "Готово" msgid "Confirm Emergency Stop" -msgstr "Подтвердить аварийную остановку" +msgstr "Подтверждение аварийной остановки" msgid "Connected" msgstr "Подключено" @@ -211,7 +211,7 @@ msgid "Delete Directory?" msgstr "Удалить каталог?" msgid "Delete File?" -msgstr "Удалить Файл?" +msgstr "Удалить файл?" msgid "Disable Motors" msgstr "Отключить моторы" @@ -223,7 +223,7 @@ msgid "Disconnect" msgstr "Отключить" msgid "Distance (mm)" -msgstr "Расстояние (mm)" +msgstr "Расстояние (мм)" #, python-format msgid "Do you want to forget or disconnect %s?" @@ -240,7 +240,7 @@ msgid "Emergency Stop" msgstr "Аварийная остановка" msgid "Enable screen power management" -msgstr "Включить управление питанием дисплея" +msgstr "Включить панель управление питанием" msgid "Error" msgstr "Ошибка" @@ -249,22 +249,22 @@ 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 "Расчетное время" msgid "Estimated Time Method" -msgstr "Расчётное время" +msgstr "Метод расчета времени" msgid "Example" msgstr "Пример" @@ -276,7 +276,10 @@ msgid "Extra Large" msgstr "Очень большой" msgid "Extrude" -msgstr "Заправить" +msgstr "Экструзия" + +msgid "Unretract" +msgstr "Выдавить" msgid "Extruders" msgstr "Экструдеры" @@ -344,9 +347,6 @@ msgstr "Расход:" msgid "Font Size" msgstr "Размер шрифта" -msgid "For mouse control or to verify touchscreen accuracy" -msgstr "Для управления мышью или проверки точности сенсорного экрана" - msgid "Forget" msgstr "Забыть" @@ -369,7 +369,10 @@ msgid "Hide" msgstr "Скрывать" msgid "Hide sensors in Temp." -msgstr "Скрыть датчики в Temp." +msgstr "Скрыть датчики в панели \"Температура\"." + +msgid "Hide temp." +msgstr "Скрыть температуру." msgid "Home" msgstr "Парковка" @@ -405,13 +408,13 @@ msgid "Initializing printer..." msgstr "Принтер запускается..." msgid "Initiate a PID calibration for:" -msgstr "Запустить калибровку ПИД-регулятора для:" +msgstr "Запустить калибровку ПИД для:" msgid "Input Shaper" msgstr "Входной шейпер" msgid "Insufficient privileges" -msgstr "Недостаточно прав" +msgstr "Недостаточно привилегий" msgid "Interface" msgstr "Интерфейс" @@ -422,11 +425,8 @@ msgstr "Неверный" msgid "Invalid password" msgstr "Неверный пароль" -msgid "Invalid temperature" -msgstr "Недопустимая температура" - msgid "Inversely affects the icon size" -msgstr "Обратное влияние на размер иконки" +msgstr "Обратно влияет на размер значка" msgid "Invert X" msgstr "Инверсия X" @@ -441,10 +441,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 Рестарт" @@ -464,10 +464,8 @@ 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 скрыты и должны использоваться из extrude" +msgid "LOAD_FILAMENT/UNLOAD_FILAMENT are hidden and should be used from extrude" +msgstr "LOAD_FILAMENT/UNLOAD_FILAMENT скрыты и должны использоваться из extrude" msgid "Language" msgstr "Язык" @@ -476,10 +474,10 @@ msgid "Large" msgstr "Большой" msgid "Last Duration" -msgstr "Продолжительность" +msgstr "Последняя продолжительность" msgid "Last Used" -msgstr "Последнее использование" +msgstr "Посл. использование" msgid "Layer Height" msgstr "Высота слоя" @@ -497,14 +495,11 @@ msgid "Limits" msgstr "Ограничения" msgid "Load" -msgstr "Загрузить" +msgstr "Загрузить филамент" msgid "Loading..." msgstr "Загрузка..." -msgid "Lock" -msgstr "Замок" - msgid "Lost Connection to Moonraker" msgstr "Потеряно соединение с Moonraker" @@ -533,7 +528,7 @@ msgid "Max Velocity" msgstr "Максимальная скорость" msgid "Max:" -msgstr "Максимум:" +msgstr "Макс:" msgid "Maximum" msgstr "Максимум" @@ -572,7 +567,7 @@ msgid "More" msgstr "Больше" msgid "Move" -msgstr "Двигать" +msgstr "Движение" msgid "Move Distance (mm)" msgstr "Дистанция перемещения (мм)" @@ -580,6 +575,9 @@ msgstr "Дистанция перемещения (мм)" msgid "Name" msgstr "Имя" +msgid "Actions" +msgstr "Действия" + msgid "Network" msgstr "Сеть" @@ -602,13 +600,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 "Не все экраны поддерживают это" @@ -629,12 +627,15 @@ msgid "Nozzle diameter" msgstr "Диаметр сопла" msgid "Only for the move panel" -msgstr "Только для перемещения панели" +msgstr "Только для панели перемещения" #, python-format msgid "Outdated by %d" msgstr "Устарело на %d" +msgid "PSK for" +msgstr "Пароль для" + msgid "Package will be updated" msgid_plural "Packages will be updated" msgstr[0] "Пакет будет обновлен" @@ -644,8 +645,8 @@ msgstr[2] "Пакеты будут обновляться" msgid "Part Fan" msgstr "Вентилятор обдува детали" -msgid "Password" -msgstr "Пароль" +msgid "Chamber Fan" +msgstr "Вентиляторы камеры" msgid "Password saved" msgstr "Пароль сохранен" @@ -663,10 +664,10 @@ msgid "Pins" msgstr "Пины" msgid "Please recompile and flash the micro-controller." -msgstr "Прошейте заново микроконтроллер." +msgstr "Прошейте микроконтроллер заново." msgid "Please wait" -msgstr "Пожалуйста подождите" +msgstr "Ожидайте" msgid "Power" msgstr "Питание" @@ -675,13 +676,13 @@ msgid "Power On Printer" msgstr "Включить принтер" msgid "Pressure Advance" -msgstr "Опережение давления" +msgstr "Pressure Advance" msgid "Pressure Advance:" -msgstr "Опережение давления:" +msgstr "Pressure Advance:" msgid "Pressure advance" -msgstr "Опережения давления" +msgstr "Pressure advance" msgid "Print" msgstr "Печать" @@ -762,7 +763,7 @@ msgid "Retrying" msgstr "Повторная попытка" msgid "Rotation invalid" -msgstr "Вращение невозможно" +msgstr "Неверный переворот" msgid "Save" msgstr "Сохранить" @@ -793,7 +794,7 @@ msgid "Screws Adjust" msgstr "Настроить винты" msgid "Screws not used:" -msgstr "Регулировочные винты не используются:" +msgstr "Неиспользуемые винты:" msgid "Send" msgstr "Отправить" @@ -813,11 +814,8 @@ msgstr "Показать мощность нагрева" msgid "Show Scrollbars Buttons" msgstr "Показать полосу прокрутки" -msgid "Show cursor" -msgstr "Показать курсор" - msgid "Show only devices that are able to be set" -msgstr "Показать только те устройства, которые можно установить" +msgstr "Показывать только те , которые можно настроить" msgid "Shutdown" msgstr "Выключить" @@ -835,7 +833,7 @@ msgid "Small" msgstr "Маленький" msgid "Smooth time" -msgstr "Ровное время" +msgstr "Время сглаживания" msgid "Speed (mm/s)" msgstr "Скорость (мм/с)" @@ -865,9 +863,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 "Система" @@ -887,23 +883,20 @@ 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." +msgstr "Эта панель поддерживает до 9 винтов в сетке 3x3" msgid "This will affect screw positions and mesh graph" 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 "Итого:" @@ -911,17 +904,17 @@ msgstr "Итого:" msgid "Unknown Heater" msgstr "Неизвестный нагреватель" -msgid "Unknown security type" -msgstr "Неизвестный тип шифрования" +msgid "Remaining weight" +msgstr "Оставшийся вес" -msgid "Unload" -msgstr "Выгрузить" +msgid "Remaining length" +msgstr "Оставшаяся длина" -msgid "Unlock" -msgstr "Разблокировать" +msgid "Unknown security type" +msgstr "Неизвестный тип безопасности" -msgid "Unlock failed" -msgstr "Разблокировка не удалась" +msgid "Unload" +msgstr "Выгрузить филамент" msgid "Unretract Extra Length" msgstr "Дополнительная длина подачи перед возобновлением печати" @@ -933,7 +926,7 @@ msgid "Up To Date" msgstr "Обновлено" msgid "Update" -msgstr "Обновить" +msgstr "Обновления" msgid "Updating" msgstr "Обновление" @@ -941,15 +934,11 @@ msgstr "Обновление" msgid "Useful for un-responsive touchscreens" msgstr "Полезно для неотзывчивых сенсорных экранов" -msgid "User" -msgstr "Пользователь" - msgid "WebRTC is not supported by the backend trying Stream" -msgstr "" -"Отсутствует поддержка WebRTC у бэкенда, который пытается передать поток" +msgstr "Отсутствует поддержка WebRTC у бэкенда, который пытается передать поток" msgid "Working" -msgstr "Печатает" +msgstr "Работает" msgid "XY Move Speed (mm/s)" msgstr "Скорость перемещения по осям XY (мм/с)" @@ -967,7 +956,7 @@ msgid "Z Speed (mm/s)" msgstr "Скорость оси Z (мм/с)" msgid "Z Tilt" -msgstr "Z Наклон" +msgstr "Калибр. стола" msgid "Z offset:" msgstr "Смещение Z:" @@ -981,12 +970,11 @@ msgstr[2] "изменений" msgid "day" msgid_plural "days" msgstr[0] "день" -msgstr[1] "дней" +msgstr[1] "дня" msgstr[2] "дней" -#, fuzzy msgid "g" -msgstr "g" +msgstr "г" msgid "hour" msgid_plural "hours" @@ -1027,233 +1015,74 @@ msgstr[0] "секунда" msgstr[1] "секунды" msgstr[2] "секунд" -#~ msgid "Hide temp." -#~ msgstr "Скрыть температуру." - -#~ msgid "PSK for" -#~ msgstr "Пароль для" - -#~ msgid "Mesh calibrate" -#~ msgstr "Калибровка сетки" - -#~ msgid "Uploaded" -#~ msgstr "Загружено" - -#~ msgid "Ended official support in June 2023" -#~ msgstr "Официальная поддержка прекращена в июне 2023 г" - -#~ msgid "Hidden" -#~ msgstr "Скрытый" - -#~ msgid "KlipperScreen will drop support in June 2024" -#~ msgstr "KlipperScreen прекратит поддержку в июне 2024 г" - -#~ msgid "Print Time" -#~ msgstr "Время печати" - -#~ msgid "Starting WiFi Association" -#~ msgstr "Запуск WiFi" - -#~ msgid "Warning" -#~ msgstr "Предупреждение" - -#~ msgid "dBm" -#~ msgstr "дБм" - -#~ msgid "Deselect" -#~ msgstr "Отменить выбор" - -#~ msgid "Select" -#~ msgstr "Выбрать" - -#~ msgid "Bed screw configuration:" -#~ msgstr "Конфигурация винтов кровати:" - -#~ msgid "" -#~ "Not supported for auto-detection, it needs to be configured in " -#~ "klipperscreen.conf" -#~ msgstr "" -#~ "Не поддерживается для автоматического обнаружения, его необходимо " -#~ "настроить в klipperscreen.conf" - -#~ msgid "Unknown screw position" -#~ msgstr "Неизвестное положение винта" - -#~ msgid "Max Acceleration to Deceleration" -#~ msgstr "Ускорения торможения" - -#~ msgid "Continue" -#~ msgstr "Продолжить" - -#~ msgid "Fullscreen" -#~ msgstr "Полный экран" - -#~ msgid "Actions" -#~ msgstr "Действия" - -#~ msgid "Configuration" -#~ msgstr "Параметр" - -#~ msgid "Homing" -#~ msgstr "Парковка" - -#~ msgid "Disable XY" -#~ msgstr "Отключить XY" - -#~ msgid "Slicer Time correction (%)" -#~ msgstr "Коррекция времени Слайсер (%)" - -#~ msgid "Calibrated, save configuration to make it permanent" -#~ msgstr "Откалибровано, сохраните конфигурацию, чтобы сделать ее постоянной" - -#~ msgid "Decrease" -#~ msgstr "Уменьшить" - -#~ msgid "Increase" -#~ msgstr "Поднять" - -#, python-format -#~ msgid "Sending Power ON signal to: %s" -#~ msgstr "Отправка сигнала включения питания на: %s" - -#~ msgid "Sort:" -#~ msgstr "Сортировать:" - -#~ msgid "Calibrating..." -#~ msgstr "Калибровка..." - -#~ msgid "Z+" -#~ msgstr "Z+" - -#~ msgid "Z-" -#~ msgstr "Z-" - -#~ msgid "X+" -#~ msgstr "X+" - -#~ msgid "X-" -#~ msgstr "X-" - -#~ msgid "Y+" -#~ msgstr "Y+" - -#~ msgid "Y-" -#~ msgstr "Y-" - -#~ msgid "Add Printer" -#~ msgstr "Добавить принтер" - -#~ msgid "Initializing" -#~ msgstr "Инициализация" - -#, python-format -#~ msgid "Retry #%s" -#~ msgstr "Повторная попытка #%s" - -#~ msgid "Off" -#~ msgstr "Выкл." - -#~ msgid "View Mesh" -#~ msgstr "Смотреть сетку" - -#~ msgid "Sort by: " -#~ msgstr "Сортировать по: " - -#~ msgid "Bltouch found applied offset" -#~ msgstr "Bltouch обнаружил примененное смещение" - -#~ msgid "" -#~ "Check /tmp/KlipperScreen.log for more information.\n" -#~ "Please submit an issue on GitHub for help." -#~ msgstr "" -#~ "Проверьте /tmp/KlipperScreen.log для дополнитольной информации.\n" -#~ "Создайте issues на GitHub что-бы получить помощь." - -#~ msgid "Probe found applied offset" -#~ msgstr "Probe обнаружил примененное смещение" - -#~ msgid "Tool" -#~ msgstr "Инструмент" - -#~ msgid "Displayed Macros" -#~ msgstr "Показать макросы" - -#~ msgid "Z Position" -#~ msgstr "Позиция Z" +msgid "This function is designed to move a file to the main directory" +msgstr "Данная функция предназначена для переноса файла в главную директорию" -#~ msgid "IPv4" -#~ msgstr "IPv4" +msgid "Move file to main directory?" +msgstr "Переместить файл в главную директорию?" -#~ msgid "IPv6" -#~ msgstr "IPv6" +msgid "Resave" +msgstr "Перенести" -#~ msgid "Klipper Version" -#~ msgstr "Версия Klipper" +msgid "A file with this name already exists" +msgstr "Файл с таким именем уже существует" -#~ msgid "" -#~ "Klipper has encountered an error with the micro-controller.\n" -#~ "Please recompile and flash." -#~ msgstr "" -#~ "Klipper определил ошибку в микроконтроллере.\n" -#~ "Прошейте заново." +msgid "You may be trying to move a file that is already in the main directory" +msgstr "Возможно Вы пытаетесь переместить файл, который уже находится в главной директории" -#~ msgid "" -#~ "Klipper has encountered an error.\n" -#~ "Issue a FIRMWARE_RESTART to attempt fixing the issue." -#~ msgstr "" -#~ "Klipper обнаружил ошибку.\n" -#~ "Выполните перезагрузку прошивки, чтобы попытаться исправить проблему." +msgid "Replace it?" +msgstr "Заменить его?" -#~ msgid "KlipperScreen Version" -#~ msgstr "Версия KlipperScreen" +msgid "Calibration" +msgstr "Калибровки" -#~ msgid "Show Only Heaters in Temp." -#~ msgstr "Показать только нагреватели в темп." +msgid "Bed calibrate" +msgstr "Калибр. карты" -#~ msgid "Temp" -#~ msgstr "Температура" +msgid "Autocalibration of PID hotend" +msgstr "Калибр. PID хотенда" -#~ msgid "Number Pad" -#~ msgstr "Клавиатура" +msgid "Autocalibration of PID 1st head" +msgstr "Калибр. PID 1-й головы" -#~ msgid "Preheat" -#~ msgstr "Преднагрев" +msgid "Autocalibration of PID 2nd head" +msgstr "Калибр. PID 2-й головы" -#~ msgid "Screen will show in less than one second" -#~ msgstr "Экран отобразится через одну секунду" +msgid "Autocalibration of PID bed" +msgstr "Калибр. PID стола" -#~ msgid "Medium (default)" -#~ msgstr "Средний (по умолчанию)" +msgid "Autocalibration of Z-offset of the 2nd head" +msgstr "Z-офсет 2-й головы" -#~ msgid "File Estimation (default)" -#~ msgstr "По файлу (по умолчанию)" +msgid "Make sure that moving the bed 10mm down will be safe for the printer!" +msgstr "Убедитесь, что перемещение стола на 10 мм вниз безопасно для принтера!" -#~ msgid "..." -#~ msgstr "..." +msgid "Bed Up" +msgstr "Стол вверх" -#~ msgid "Change Printer" -#~ msgstr "Сменить принтер" +msgid "Bed Down" +msgstr "Стол вниз" -#~ msgid "Fan Off" -#~ msgstr "Bыключить" +msgid "Bed Down 10mm" +msgstr "Стол вниз на 10мм" -#~ msgid "Fan On" -#~ msgstr "Bключи" +msgid "After confirmation, the autocalibration of the 2nd head offset will begin" +msgstr "После подтверждения начнется автокалибровка z-офсета 2-й головы" -#~ msgid "Fast" -#~ msgstr "Быстро" +msgid "After confirmation, the PID bed autocalibration will begin" +msgstr "После подтверждения начнется автокалибровка PID стола" -#~ msgid "Slow" -#~ msgstr "Mедленно" +msgid "After confirmation, the PID hotend autocalibration will begin" +msgstr "После подтверждения начнется автокалибровка PID хотенда" -#~ msgid "?" -#~ msgstr "?" +msgid "After confirmation, the autocalibration of PID 1st head will begin" +msgstr "После подтверждения начнется автокалибровка PID 1-й головы" -#~ msgid "Cancel Change" -#~ msgstr "Отменить изменения" +msgid "After confirmation, the autocalibration of PID 2nd head will begin" +msgstr "После подтверждения начнется автокалибровка PID 2-й головы" -#~ msgid "Control" -#~ msgstr "Управление" +msgid "Are you sure want to unload the current filament spool?" +msgstr "Вы уверены, что хотите выгрузить текущую катушку филамента?" -#~ msgid "Load Average" -#~ msgstr "Средняя нагрузка" +msgid "Are you sure want to load a NEW reel of filament?" +msgstr "Вы уверены, что хотите загрузить НОВУЮ катушку филамента?" From 3515958a6deba2585ee95f649902c5ab04719dd7 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 12:55:47 +0300 Subject: [PATCH 097/127] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20RU=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=87=D0=B5=D0=B3=D0=BE=20=D0=BF=D1=80=D0=BE=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D0=BD=D1=81=D1=82=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../locales/ru/LC_MESSAGES/KlipperScreen.mo | Bin 26920 -> 26920 bytes .../locales/ru/LC_MESSAGES/KlipperScreen.po | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo index 76b1d07bdcf0b171aea072ddb57ea24fd202b8d4..d25d987563a8cbbe2c12759b66286a623760c152 100644 GIT binary patch delta 16 YcmZ2+iE+gx#toWgjHa8l%>Eex06UZhe*gdg delta 16 YcmZ2+iE+gx#toWgj0T&v%>Eex06TUDdH?_b diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po index 6c56e80e5..bac2fee56 100644 --- a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-26 12:31-0300\n" -"PO-Revision-Date: 2025-02-06 12:50+0300\n" +"PO-Revision-Date: 2025-02-06 12:55+0300\n" "Last-Translator: gfbdrgng \n" "Language-Team: Russian \n" From 7932755bc46ae2e67c5384e7408a9f6c8c2ed0aa Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 13:19:07 +0300 Subject: [PATCH 098/127] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20RU=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=87=D0=B5=D0=B3=D0=BE=20=D0=BF=D1=80=D0=BE=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D0=BD=D1=81=D1=82=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../locales/ru/LC_MESSAGES/KlipperScreen.mo | Bin 26920 -> 27152 bytes .../locales/ru/LC_MESSAGES/KlipperScreen.po | 7 +++++++ 2 files changed, 7 insertions(+) diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo index d25d987563a8cbbe2c12759b66286a623760c152..c67788970960f0d03a132797babf95d98a377a23 100644 GIT binary patch delta 7677 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 MS@x<8178pRA1S7W$N&HU delta 7457 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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 bac2fee56..dc977a5e7 100644 --- a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po @@ -931,6 +931,13 @@ msgstr "Обновления" msgid "Updating" msgstr "Обновление" +msgid "Show cursor" +msgstr "Отображать курсор" + +msgid "For mouse control or to verify touchscreen accuracy" +msgstr "Для управления мышью или для проверки точности сенсора" + + msgid "Useful for un-responsive touchscreens" msgstr "Полезно для неотзывчивых сенсорных экранов" From dc86ca259fc3d45b11df33fd8373c15d6276c351 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 13:21:53 +0300 Subject: [PATCH 099/127] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20RU=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=87=D0=B5=D0=B3=D0=BE=20=D0=BF=D1=80=D0=BE=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D0=BD=D1=81=D1=82=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../locales/ru/LC_MESSAGES/KlipperScreen.mo | Bin 27152 -> 27263 bytes .../locales/ru/LC_MESSAGES/KlipperScreen.po | 6 +++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo index c67788970960f0d03a132797babf95d98a377a23..8216db6f91ce7d67d485ab32b2cd26396b17d9ca 100644 GIT binary patch delta 7693 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 b1y&>{tn~M4k(riO@pby!Q59u9k45|+=BF16 diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po index dc977a5e7..93b2f6ed4 100644 --- a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: KlipperScreen\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-26 12:31-0300\n" -"PO-Revision-Date: 2025-02-06 12:55+0300\n" +"PO-Revision-Date: 2025-02-06 13:21+0300\n" "Last-Translator: gfbdrgng \n" "Language-Team: Russian \n" @@ -937,6 +937,10 @@ msgstr "Отображать курсор" msgid "For mouse control or to verify touchscreen accuracy" msgstr "Для управления мышью или для проверки точности сенсора" +msgid "Lock" +msgstr "" +"Заблокировать\n" +"дисплей" msgid "Useful for un-responsive touchscreens" msgstr "Полезно для неотзывчивых сенсорных экранов" From f7d766a7c40e947a296dc57b650ea1b4c49e917b Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 13:23:18 +0300 Subject: [PATCH 100/127] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20RU=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=87=D0=B5=D0=B3=D0=BE=20=D0=BF=D1=80=D0=BE=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D0=BD=D1=81=D1=82=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../locales/ru/LC_MESSAGES/KlipperScreen.mo | Bin 27263 -> 27248 bytes .../locales/ru/LC_MESSAGES/KlipperScreen.po | 4 +--- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo index 8216db6f91ce7d67d485ab32b2cd26396b17d9ca..a0216303f2c28c74d9eb9623cea1db976e365c5b 100644 GIT binary patch delta 1403 zcmXZbOGwmF6vy#nL^YO=%zS2QhNb3YQYNBClA5F`=1f{@X1>xkwJMD!qD`}q2u%uR zBh;dz2NrE47ZHNcDmO(XG!(Q53rQ=2`u_a?SD$;%|IWSV-h1ZXY{d83h{q3N11V;9 zq0y`mM=%kmaVO4UG{zip@|*DzaS^VRbh6EQ^)~Sh4r`x&!A2+jw<9n>PEhzp6Cyzqvx2D&%yP?C2m}cy0JFQ z!hY260>cb+;t=X;rZFDFZu|>%qWI%x4VZ^1coCCv43qE)st0CJ>n)--%xHCc099Z) zreZrLvcC;7C?s(Mwa_b6lYDgJAE<&N+nkEiUA?G<$}kgKT!&mksFO~i)(fK!vWQwQ zs$EaU`)^^O3H7)QJ5fy+T%KTd8`FrVaXWrS&5u6e%+Ex{HK>JKQO$VPbsSaT8>Ij2 zCu;to4sIyGpq+uW{gAiL^ZC(W>g_vsKQ6_ zCcZ%J=j-JDb+Rr7TKEd8fKgQb4sOJk$Sc@eyo^Ps%o_1I(%=@^Wwr}D@i2~{3J9bA zJ@Z(EY2D6~G@%MT-_8A>W^j!}2`-=t@%A`Zx!=`~4de$ ajUM#67Ngdwz+9}H@FWCFC&n8;B>o2*q_=7S delta 1419 zcmXZbOGs2v9LMpa2k^J-MQ9@pbl z+flCxt!^+zAcF@HOvO2D##fk$xlEL(7z^+KYJIC6_oIt>Ki1(Ss=#GbzTc?#Rxl6q zTlk^7C1jnjnLru=KdREpwqYz~{u({_6Wv(eYRp~?;x-(^5`2!?_zj(y=rd+N=3_2; zaRc_?4IBc}6|CvvnIvlVkuaW}5R!}h!# z)v-%hgafGeLSqbc;s~lWi?|Wv_B^HCI#Cfe5U;|`cnh64i8|R!)E!ttmmLpia7g$`?m{ znxsxEUp|(wzuCh;3p#NJ_M$Fbcy)m>53zvxA{OH>)cS%`)_NCe?n8C%BD!$Mb_!MC zXXO5wHK(ohZI}@v(8E9{8$@k9f=U=hy%<5Yd;t~zYWo-UjWf?!m$4Al>K07LZd4(C zsKO`kF1|zU=RZsTb+SGNN_-ntzyvBjgPZUJ@-@sC9KzZzV;b=-a?y>`PZzNlkKs6~ zfH>;kvx57uBw&4#E>xj61N8qqgL?$3F!7vKhzHfm2HOBOFdsy9Y#x>1NVhQuu>*Da z?qgWbQ3nYGjj6$Y)LocG-LWOq-!L9zp_@T6Rp>ztCZZ43@^(CgSFj$R;dV^Fz;{F! sreGyH&|_PN%5xldp?BJmJzAZa7M+Pcem@+25q%n+jm}NqY5bJ)A9%LF8UO$Q diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po index 93b2f6ed4..8a35e9715 100644 --- a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po @@ -938,9 +938,7 @@ msgid "For mouse control or to verify touchscreen accuracy" msgstr "Для управления мышью или для проверки точности сенсора" msgid "Lock" -msgstr "" -"Заблокировать\n" -"дисплей" +msgstr "Заблокировать" msgid "Useful for un-responsive touchscreens" msgstr "Полезно для неотзывчивых сенсорных экранов" From 37dc5159938125af82fa8bb68b6aa23d8bf686fe Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 13:38:00 +0300 Subject: [PATCH 101/127] =?UTF-8?q?=D0=92=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=B0=D0=B2=D0=B0=D1=80=D0=B8=D0=B9=D0=BD=D0=BE=D0=B9=20?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/base_panel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panels/base_panel.py b/panels/base_panel.py index 0b7954533..41acea711 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -41,7 +41,7 @@ def __init__(self, screen, title=None): self.set_control_sensitive(False, control) self.control['estop'] = self._gtk.Button('emergency', scale=self.abscale) self.control['estop'].connect("clicked", self.emergency_stop) - self.control['estop'].set_no_show_all(True) + # self.control['estop'].set_no_show_all(True) self.shutdown = { "panel": "shutdown", } From fc7298cb07aa65ece1a8a5f8d0ad6de9b9b2de47 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 13:41:55 +0300 Subject: [PATCH 102/127] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=80=D0=B0=D1=81=D0=BF=D0=BE=D0=BB=D0=BE?= =?UTF-8?q?=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BE?= =?UTF-8?q?=D0=BA=20=D0=B2=20=D0=BF=D0=B0=D0=BD=D0=B5=D0=BB=D0=B8=20"?= =?UTF-8?q?=D0=92=D1=8B=D0=BA=D0=BB=D1=8E=D1=87=D0=B8=D1=82=D1=8C"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/shutdown.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/panels/shutdown.py b/panels/shutdown.py index ead13036d..da5fd50e9 100644 --- a/panels/shutdown.py +++ b/panels/shutdown.py @@ -28,11 +28,20 @@ def __init__(self, screen, title): lock_screen = self._gtk.Button("lock", _("Lock"), "color3") lock_screen.connect("clicked", self._screen.lock_screen.lock) + # self.show_lock = self._config.get_main_config().getboolean("show_cursor", fallback=False) + 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, 2) + # self.main.attach(restart_ks, 1, 0, 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) if self._printer and self._printer.state not in {'disconnected', 'startup', 'shutdown', 'error'}: - self.main.attach(estop, 0, 0, 1, 2) - self.main.attach(restart_ks, 1, 0, 1, 1) - self.main.attach(lock_screen, 2, 0, 1, 1) + self.main.attach(estop, 1, 0, 1, 1) + self.main.attach(restart_ks, 2, 0, 1, 1) + self.main.attach(lock_screen,0, 0, 1, 2) self.main.attach(poweroff, 1, 1, 1, 1) self.main.attach(restart, 2, 1, 1, 1) self.content.add(self.main) From 2fbefae710c2302ccd2e323006b8cdbf246b44f2 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 13:44:39 +0300 Subject: [PATCH 103/127] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20RU=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../locales/ru/LC_MESSAGES/KlipperScreen.mo | Bin 27248 -> 27300 bytes .../locales/ru/LC_MESSAGES/KlipperScreen.po | 3 +++ 2 files changed, 3 insertions(+) diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo index a0216303f2c28c74d9eb9623cea1db976e365c5b..f632b800cd144c2b71207ab8fea903b6084f2e0d 100644 GIT binary patch delta 5973 zcmXZe33QHE9>?+f5|IdzShABKB$0%K*c%l@5?f*kVhceOQO44a)6q9+X;n_okf#{b zY1P(RYnu*AE2E}|u}n1%+NM>RX_;XdyMxa6m*+ZOpL_57Jooc3 zx{1#!!=FhWW1=uBz?dJ^4$-JFe`;Y2f6ZF{@yE}wAs)xJcot*v9yZ1Bmd4b>WNd_; z(HAqYK4v3Jm^|!hjMt2(k_uxMj)=#Rs?xCJ%wC&*v3hksbpoI^jni5>9) zreeDoW4hrOOu`kIh(|FVuh;gy#x!X~v<&n{WmJMbSb>4K2E%YGM&K8y46Yz+nSWV* zTf5)4Lj{(BTCflmU^%KH@1ZLBk;Yly?4+R*9kdsGjtbxu>cVr_0578!uCd-m-S-r= zb#>dg{TS31#i8y`L*3sSBQXax&ouNZgWu6miB_Wa=okj$Nz~q6LY4lRwJw9~lJQ4n z7LPhEsi+0BQ40>oAe?}j?`72drKtOs#j^j+XsonfY(=VRcB8iBJo?~sRHk*=A5GK% zm0=WWixN;J?~Yn{6spvdF%IXTwr&k-;eDw4j@67>HmtFC@S8a zpbe_u5u0FFtdBX?VW>a~P?ed8+L8r!+>3tnmmu?a&AT)-!F%q2dEdGTHPLqT!#!9B z|ALzE2!`TG)FG}$W%}HX2PC)&wL#6FjLNtR>iPlb$NHwYw!tB>{vLaCK^dw7U!oSg zhbsMVsP{qR_U>VgM{V6e)LAM-y$N5(Y^*>({0>#=8q`+aK!4UZk7y|JI*D#+8>2E0 zLER8($6ML)cx=FUvh8L$6R^FxgXp(bi!jYBPvYVD4???qHa`lA*quol_zS*Ytulc>KMOBv8%T8_$OgT3G| zYVW>4J@iU+bGm?U_n2nl$HtH!`o=p9f`Ns_C4R#0{ z;d#_vSEDAlg?ik4JGcQg#}xW4P#F%zKpc$BE&5-Q^~48&|yK%=oCPC{Kj8@2FjsCjqV@4d%pXrj}0 z;DYrh)L!4T-#ewB)@;-n$wfUq1*kygq5>#IU0;r>SOvDl^~hgy zJdOQV#1H5-!{?|8ns(v+jBQXE%*3Yn3M%8}sEOC20{GC5Z$~Y32t8Pd3giUxsxaqJ z2|q>6lhl>^>qn(mS9dRaqbBZW9f+D}80v-**o_;Ckn?5Mb$5RYPGb!H8hiumQN|Z> z8S4KLU!xA+HB=(^unGEkd%9mlVl)FuScHSI828`|4C&=siVNu9Km}U(f;&+$_M^WD zncE!25PXO^7?|$fKL%&huSBimP2ogzqv2pKp2p!AN%-uBc^QY`CRAzfU=%(!FvAlXy{#BgyC3<&2b&7RG*@LZcm^x{sDDX zYOp0fw*9ca?szilaqEi%Fc($&)u?s0+5T79koC<)8YSVhCWLlS^#=pYJ=*LM@iDzOwE<@eF7ZuPk)D~Bx0(z7~{Z*QP zf$oJd)@0P7?1?&r^RN$Y!v^>(s#14R3HS_hE6@qGMZ=K8WlGTxE6^X;qXOE3de7_| zMEw<6B?FrHXH*4lVgNQB>{cck6?rmF!z^rwyHLLohf()`gRSug+t&e7Wdl$Fhaqk9r=ZIA|7|rx-He)}GHi);FvX5{MwR{rR0XG@_Iv{-;~`Y( ze?bN0eL_Qf7Qn-=LzaNLV5;?1>vDXZ@eQb_B`VJicogbX&qY1wZ=(X(Z2MtVHtc+J~10vT9=yq3)es0*u56?lT$yP)B2Wg;+`en-^88Q2ELpxzgMz}goP zcA~!nwMEs~5g(w|Yd1pU?0**;%4`Vw;@>d{FJL0pU;+k>bOY&$`o2GEJRh5&*II#E zU<)?H1E@oI9P{xMHpUn_L9B05XlM&EP&X9n3oOADT#P({W;ZIp2dD|3q3-h?rSE!FR9&1{SyhrlSHGhYGM5yWpDz)L)q#VnBgZqB1vQ-3)?Jk7o>Oybo&c zhuQuVRK*sc&OjN~mL8Sy0o3WQ#%B1$_8X6L6G|LM{qy*uF9Q+iU^wnZW%f1d3|vJ` z*l4`FU^i4i{ZRqtVB? z0F~)Q)Pzq^ThnNwJ7Fwp%X*-`FUB}rggSH^?e}}J1$}Qd4Lz?Q6$I zZa${qGV38!fH#nHXc|s(uP;Jv$wE|OZ=e=liJEUC>b?U=#l7Yt4SjLP>NDBh<4{av zJONeeiKtid98@5$p#tBDtFa2TU`dgi*=wkI*P;U0X~#du=Jc=Ncs>8OX_PWBWQzMg zpR>q8H?4S0rQ#wSiaSsNJV8A^zWfk$#Wd8G%)%)ABP!sXI0KJjPmC+J6+%^Xp=5ot zoJJmgfa>2yO)z)5`}10cI)o>1t-eQPwEQLa=Xf0|fGeoO_8j#%hO&BhOhk=O#X7hc zb=XTWa{!I?H28fnKVvMW%yj=ZoR9VCk41khvX-DGdIj6#BF8^ukpDmrP5z8`CWMrG z@}27;S@lLRHrVMB+SxP4nGsqTJdFMkuG!A#F`q)`a%f_DE~5(cDW4oZAMu&Q*h9R) zM}MOE%;z(Kao!TOztUZ44{|cXdU=L8i^JkPna-B5tU7%?&aJSPo^ej2@XnrWCnLO< zr@yl}Jla#>YzW`x$#XIzrhBrST@i7f9H%NG*E7Ir8=2@ooXJM=>E{$g4)Tn3wnXN7 zMmzT-r+6kh1yLP6qnvl5u6c&;pWWh2h)>C!DYN!>OY56j@5A$-p8w2QJUndwqG=C( F{ttY?to;B0 delta 5942 zcmXZg3shBA9>?*04Ga`ed|bFZ6ccAvv7Cy-`nVeQib&TwxsWlz7 zw5&BW<|LzyS=Q3j)-0^!=!lxD=KEvsme8t_iF3tMCOZ+gI(B<#@InA5bQf*LjE`DA1GW0vt(ByPee+=gkm2UGD!Y>$zh zj0wkNjK;3m60`7j%tod#xtL>&XU5PN&cJh+hx?onosB7?UyQfm8dTtQ$RG12e=(=o zixGGd``}s3!eELqgRu~M;}T5AE!YE(HTOMZT68fcgMm!cil$;1)?o}jhw-=;6YyQs z3cf(*GT%C{x$D6@Y+_lc2}@B4)}ku16jjNWHO~Czbs8$sM)!rkpc2@L`r=+}g`cA) zKI;4qb>DwbTX)6v+jg~E6o}E@xg$h`L3h*d)#Ai?|d(Dl%g(~rTZhQ}_GM~Beubn468k+DNsuE#D*GfWo z8xBTgJQTH}QP>8@qY|h>1+GC=sus17CD;<5MOA7gDxvjm{B6|Mcw1=bhCQf2e|LU` z{ptS`6)38Q4bUFd?~LuR8{UpXoFh?*6rn0pg4&XqZv0`4puZ4_RGhmpgp*PC)nFt(hWS{BO6UN3I%J1w zs5IZ80-QxnbOp6F*WI{Y5(*UUj6+S(#n}UOUmw(A9)Oyt$T{APPeFZeL2v4>#_t)> zVOoq@$x8Qy&8P(4MLqW)q5^;J`lnDO{Ta28YpBxSbk}2eiRg@^U@B&#;#Z=cvc(zH zUn_r=0lmTA!D##hwbx&v0-QoUZr4x=g=ZSm7o$-t9D%xCfJ$f*sxnhi_s>8rv=(*W z5^RmzJQ})TH!6`&okvkCKI8gLsP9Ga6Bms!s6>)bD^A52%tj?tfKfOO_5DiJ#Pd*b zUw7BNtuz#9mmB!h`88^uh=DL2N>zASq?_?wq z&s5Q9%fLd^3ZFr(-~~6n8dbWDs0lWsCfI>m`EJyGhp{dG1NFUgs29*xR0UdP+3WGB zcs;TC`Oj=_@Tzqeaxs=K)$)iV@o~%mucwmU3VAS^s@otP%B7At+YRm!UEKUD^OeDV;ihTCGZ}q#5++5>_c|V z97es^0{!h-$VE>VYG`O>f5ahp5H&&g06RexDv?CgcoynxWTO(#LnTmwnz$PEy@jYs z)nXbhMgEx0{G~)s4`Ba0(D;b~1-ONyF>0XAd;+$oKOMEwM^J(5Pzfw^<34JldJJF# zDv>S7tH6AOTId;6oQ{L+Z%OJP>aRWQ&VT~YNCHJRuIkVDuiRQA*=|9FJk7&n}qBI2Ko+ zN_!lWun|>ClWTw7`eFjzMc5TrJ3m5w{{*Js4eW#oBkj{Q1bGE}rkF;E3)R>WpGK8x z9meAp)QUgD4tNL^=m*yiM={l(U^@Yy@z_&zvTK`QQzB(Lzv%uNkf^pq>jWi zy-+KE5St$(%%r~$siwJ#3Y^8WsI!rW6vdRG0{;PX@eNeMr%_vS6}6z&`Sxi`#Te!{ zB{USU5;JhVF5v6P_L~OO1ZPoO(T(NldLL9JMxX*$VrP65d6k&8sKa&u6Y*b|i%qC` zvJ0qAG>zFb(r_WNII|wLl2b@=%)e0yWENWIqsF)5{dgHw;t8C%9$16Ae?2OpO{gv2 zk4or!RAsIfQGb0g@@{)W5OpfMq7LB{%*B_m6&^-a>I7;97f=;QEVf&egR%6hF#>Bb z5|^UpS%rGfyoO4wq1dy54>F(%e2cB|7OFB4V{GO@oJGGcD$rWgZ^K)t#CG8w_?hdU zN8NuFm2iu(_McwuF_nG=YWzu$hD!4yswD5Ao`OBDf7E#%wW429E4;nLzQIDM@g!8~ z(@+&GLGAgon1S`E(tnMbxDmBw-c=epWbJqf=nG?=_cXA`~?b*d{+ z&-nsW0xMmA2P)nX)QZpIOl)0d6JCHZdj1#D;I(X?M}2V*ssfFuy}N;`%x&ZC%HvTJ z_rk6?67{~Ah0QM_>_>k!YK!(`A3TjrXxdD$f@BlWK9<|~PsLJfe4%q1W*HH`VFok~^WBL^8 zpFrbr2157>#^W~B8TbMf@EU5ul&S6vpb{K`i8u}8a5477mr-%{q0Y!D*T0NPs8yv+ zxU=UPnW#X+u?to>Yn>ZVE8U9<*oa!mHB`XpX?Dx*KwU4z?pTF7bj#iK^_Wb5Kk9My z&d|^eG1Ki0T~PfZRN$$o!&u|2M@K}}d*Wmh&6HDMhpfi-S?BX*?! zDY6UZ7%pjk{%6>K`Fw~RaMOy{R2EiY39d#Z(1?0`F5w_d<_AGrG7**NV_1#LFbA)o z63LuxD>>3R3CA%$4?T~@$21gR*c|(_Iu>>KUcz;{j#|m2x%TIGHfrLxQHSgc)MMC) z+1TX9`;tuy`bDUckHOJ62l*K>TXA42jaxLru*(DX-{svfl76N$8x<%IdttsG3KmBe z1!(f$6#t>%3xSFLjbK6ec*ctT{J8#s$^N3a>9OPJ@8Ua~`P|?$%|9QPKD>lcC3=fb z5ubWK`v1>Oc!ZDs>&)j7K2sU5z%)LCXy5IZ#SaaP@mI!o4~+6Zh%X>9|JV3VfqVVr zQ2#)IUltk~xXWJ|>KwSo-xAssDD}$|<^)FjyA!$x3jH$)rGb2ZU}Ab?8Nnv-$@8ld vivtz@2Z^PDNq%_Jj6kJdozy2#?ypN~42<3WMDn5F_ObzYW^Laxt10aNcNC=W diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po index 8a35e9715..99208fc2a 100644 --- a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po @@ -940,6 +940,9 @@ msgstr "Для управления мышью или для проверки т msgid "Lock" msgstr "Заблокировать" +msgid "Unlock" +msgstr "Разблокировать" + msgid "Useful for un-responsive touchscreens" msgstr "Полезно для неотзывчивых сенсорных экранов" From 6b7c06bdf4694adc8c653bd2a370f0ecb89a47c9 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 13:47:38 +0300 Subject: [PATCH 104/127] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20RU=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../locales/ru/LC_MESSAGES/KlipperScreen.mo | Bin 27300 -> 27338 bytes .../locales/ru/LC_MESSAGES/KlipperScreen.po | 3 +++ 2 files changed, 3 insertions(+) diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo index f632b800cd144c2b71207ab8fea903b6084f2e0d..870dad3abe0237032070aa5971c70b7cb758b786 100644 GIT binary patch delta 6973 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 RZ)kma#?RgA`&QJ1{U3I{^Tq%G delta 6957 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 NIo)~ZJ>`=^{tu^y@>l=> diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po index 99208fc2a..2aa06448d 100644 --- a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po @@ -425,6 +425,9 @@ msgstr "Неверный" msgid "Invalid password" msgstr "Неверный пароль" +msgid "Password" +msgstr "Пароль" + msgid "Inversely affects the icon size" msgstr "Обратно влияет на размер значка" From 2ff2b91e74571e5b6f968961f2e52cf508fc63bb Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 13:52:26 +0300 Subject: [PATCH 105/127] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20RU=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D0=97=D0=B0=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D1=8B=20=D0=B8=D0=BA=D0=BE=D0=BD=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=B4=D1=8A=D0=B5=D0=BC=D0=B0=20=D0=B8=20=D0=BE?= =?UTF-8?q?=D0=BF=D1=83=D1=81=D0=BA=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=81=D1=82?= =?UTF-8?q?=D0=BE=D0=BB=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D1=82=D0=B5=D0=BC?= =?UTF-8?q?=D1=8B=20z-bolt=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B8=D0=BA=D0=BE=D0=BD=D0=BA=D0=B0=20QR-=D0=BA?= =?UTF-8?q?=D0=BE=D0=B4=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D0=B2=D1=81=D0=B5?= =?UTF-8?q?=D1=85=20=D1=82=D0=B5=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../locales/ru/LC_MESSAGES/KlipperScreen.mo | Bin 27338 -> 27354 bytes .../locales/ru/LC_MESSAGES/KlipperScreen.po | 4 +- styles/colorized/images/qrcode.svg | 146 ++++++++++++++++++ styles/material-dark/images/qrcode.svg | 146 ++++++++++++++++++ styles/material-darker/images/qrcode.svg | 146 ++++++++++++++++++ styles/material-light/images/qrcode.svg | 146 ++++++++++++++++++ styles/z-bolt/images/qrcode.svg | 146 ++++++++++++++++++ styles/z-bolt/images/z-closer.svg | 88 +---------- styles/z-bolt/images/z-closer2.svg | 87 +++++++++++ styles/z-bolt/images/z-farther.svg | 92 +---------- styles/z-bolt/images/z-farther2.svg | 91 +++++++++++ 11 files changed, 912 insertions(+), 180 deletions(-) create mode 100644 styles/colorized/images/qrcode.svg create mode 100644 styles/material-dark/images/qrcode.svg create mode 100644 styles/material-darker/images/qrcode.svg create mode 100644 styles/material-light/images/qrcode.svg create mode 100644 styles/z-bolt/images/qrcode.svg create mode 100644 styles/z-bolt/images/z-closer2.svg create mode 100644 styles/z-bolt/images/z-farther2.svg diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo index 870dad3abe0237032070aa5971c70b7cb758b786..d6db858d4bc592e4f3fa817fc03cc5974ce0c009 100644 GIT binary patch delta 1589 zcmXZcSx8h-9LMofNo871I%%3>WsJ6)X{NM*QW7yWS!re4v{*{ZLm*M$ZQp#TC`ChB zgrqWXO0pyfU!nyv2NI)*NP=Kqgsg}N>HFiJr_cGHd*_`0|D6AwH@(9?_6`fp_BcLc z%!Pn4DHy^`d~4(17)Knx)|lz&!`-+FM`H-bVJGI|E7W^KI1$rJjETm4^kNZCz>S!I zRVBtT=?qRV5s!B;89Ol>-(w<RXMs7w!|61sv)v|<*3Sn7{DW#jIS{X zzo9A|LiIx87I(cO)P4uhL;snh43uFlPR3SD#FwZh{DN92ZmZiPvrzF;^kNw*;r-TQ zsC6#lRBW-nvPMva#%^Oh_BUA!R7nwP!Of_;|A!@^Ss08}${12Q+?Ac`uw_|*G z98X~hM(yTWungy88?MH$s06b1xL?uYJr149L=_Y1cpFpj1uElyti(Yqz^xVbgiuG? zYVE=RaWAr@@$Geg--3n2Pf$(x7aR3_pIcCu!(bT`J*Wgc?55_*L4B5fT!cY8e;tPt zx1)}}16N=e{Wz)0{R^(ZDB@Zig_kiJ8?4Q!b)p|In8~26eMUlM!PV^ixR{QfP|xG= X$?%ErrK>jsff0|wwe3FwACmq9*8tu$ delta 1587 zcmXZcSx8k;6vpwLN@`h}!!@(WQZmzQP|J!-&_gz$U56~qA#+F#f`|qRIw}?#5e+1n zfm)DBP(nx+WCev#L|sXW`yymTMD!H&kU{^CeV%@Mt#j@^Ywfen4NS~*4tEW|!sj!)hA8%7fc7aEg-9<0Mn7>0c~7Y8v1M^N|u!Z?g6GA10;Fc!0L9&STD zx4g(WCYi+%5;1rU7vLbS#g`b5e{dB>7TX7IM&%3e3^w3Q{EAWd6Vve@reRu%EuJ^ls3OJ6l@GPp*ORi6FCGi*ZV)Pzka?yv`*ojFviWxYG9*o#) zOadn3di3IabdIrzVQ~@L@fK!cYMJe*6jf<0s-RX>p%*X*2T><9i7Mzj>SUIc+eX&o zV&bi+d;@9*PT1Hnoh)>8H&C-MfI5LUsLlhZ6AIa9hbRdZ=b$<(L?1Td0(^`K_yN`7 zFVrlAR@nWrP|vHxDCW;JvrvVnF%f$(9v`8G@EvNSph`Oo-L#pj(yA*Z*PSpKX zZhQ{4Z#QZv@4HT-qY9(;+v#45+MokJI1UdQBEQmFXKWSMpZnHO*n-cF~7kU)PXwE9@ioC z5x+vVG@gU@_g%P!cmUJ!2X^avqitx&VX>LSb5sF(nuaR{^;vo`7Yp6|c?=@HjXL@} zxD{VuK87{hzu-~~AwG?v*n;8M;d%wNPxwt1D_HbCO!G8toYVJy*x%}Jdq3oF@wZ)l Q;PVBK`r94`6@E(i56^4YasU7T diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po index 2aa06448d..1f5847603 100644 --- a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po @@ -450,7 +450,7 @@ msgid "Job Status" msgstr "Статус работы" msgid "Klipper Restart" -msgstr "Klipper Рестарт" +msgstr "Klipper перезагружается" msgid "Klipper has disconnected" msgstr "Нет связи с Klipper" @@ -459,7 +459,7 @@ msgid "Klipper has encountered an error." msgstr "Klipper обнаружил ошибку." msgid "Klipper has shutdown" -msgstr "Klipper отключился" +msgstr "Klipper выключился" msgid "Klipper is attempting to start" msgstr "Klipper готов" diff --git a/styles/colorized/images/qrcode.svg b/styles/colorized/images/qrcode.svg new file mode 100644 index 000000000..bb8f2c4e9 --- /dev/null +++ b/styles/colorized/images/qrcode.svg @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/styles/material-dark/images/qrcode.svg b/styles/material-dark/images/qrcode.svg new file mode 100644 index 000000000..bb8f2c4e9 --- /dev/null +++ b/styles/material-dark/images/qrcode.svg @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/styles/material-darker/images/qrcode.svg b/styles/material-darker/images/qrcode.svg new file mode 100644 index 000000000..bb8f2c4e9 --- /dev/null +++ b/styles/material-darker/images/qrcode.svg @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/styles/material-light/images/qrcode.svg b/styles/material-light/images/qrcode.svg new file mode 100644 index 000000000..bb8f2c4e9 --- /dev/null +++ b/styles/material-light/images/qrcode.svg @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/styles/z-bolt/images/qrcode.svg b/styles/z-bolt/images/qrcode.svg new file mode 100644 index 000000000..bb8f2c4e9 --- /dev/null +++ b/styles/z-bolt/images/qrcode.svg @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/styles/z-bolt/images/z-closer.svg b/styles/z-bolt/images/z-closer.svg index 38cd082d7..bac175ab0 100644 --- a/styles/z-bolt/images/z-closer.svg +++ b/styles/z-bolt/images/z-closer.svg @@ -1,87 +1 @@ - - - - - - image/svg+xml - - folder - - - - - - - folder - Created with Sketch. - - - - - - - + \ No newline at end of file diff --git a/styles/z-bolt/images/z-closer2.svg b/styles/z-bolt/images/z-closer2.svg new file mode 100644 index 000000000..38cd082d7 --- /dev/null +++ b/styles/z-bolt/images/z-closer2.svg @@ -0,0 +1,87 @@ + + + + + + image/svg+xml + + folder + + + + + + + folder + Created with Sketch. + + + + + + + diff --git a/styles/z-bolt/images/z-farther.svg b/styles/z-bolt/images/z-farther.svg index 63cdb7a44..31320362b 100644 --- a/styles/z-bolt/images/z-farther.svg +++ b/styles/z-bolt/images/z-farther.svg @@ -1,91 +1 @@ - - - - - - image/svg+xml - - folder - - - - - - - folder - Created with Sketch. - - - - - - - - - + \ No newline at end of file diff --git a/styles/z-bolt/images/z-farther2.svg b/styles/z-bolt/images/z-farther2.svg new file mode 100644 index 000000000..63cdb7a44 --- /dev/null +++ b/styles/z-bolt/images/z-farther2.svg @@ -0,0 +1,91 @@ + + + + + + image/svg+xml + + folder + + + + + + + folder + Created with Sketch. + + + + + + + + + From e6965dbb9db9d072eb51b620ef042e062093af53 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 13:58:53 +0300 Subject: [PATCH 106/127] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20RU=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D0=9D=D0=B0=D0=B7=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B8=20=D0=B8=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BF=D0=B0=D0=BD=D0=B5=D0=BB=D0=B8=20=D0=9F?= =?UTF-8?q?=D0=B0=D1=80=D0=BA=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=B7=D0=B0=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=B5=D0=BD=D1=8B=20=D0=BD=D0=B0=20=D0=94=D0=B5?= =?UTF-8?q?=D0=B9=D1=81=D1=82=D0=B2=D0=B8=D1=8F=20=D0=B8=20main?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../locales/ru/LC_MESSAGES/KlipperScreen.mo | Bin 27354 -> 27354 bytes .../locales/ru/LC_MESSAGES/KlipperScreen.po | 8 +++----- panels/move.py | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo index d6db858d4bc592e4f3fa817fc03cc5974ce0c009..3837cb0e12fe7f5f4d22be595745ede0d0beab12 100644 GIT binary patch delta 17 Zcmcb0mGRb9#tnbXm`p7;|2MmB3;\n" -"Language-Team: Russian \n" +"Language-Team: Russian \n" "Language: ru\n" "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%10<=4 && (n" -"%100<10 || n%100>=20) ? 1 : 2);\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: Poedit 2.0.7\n" "X-Poedit-Flags-xgettext: --add-comments\n" diff --git a/panels/move.py b/panels/move.py index 3cb285b42..4da8e3c70 100644 --- a/panels/move.py +++ b/panels/move.py @@ -34,7 +34,7 @@ def __init__(self, screen, title): "y-": self._gtk.Button("arrow-down", "Y-", "color2"), "z+": self._gtk.Button("z-farther", "Z+", "color3"), "z-": self._gtk.Button("z-closer", "Z-", "color3"), - "home": self._gtk.Button("home", _("Home"), "color4"), + "home": self._gtk.Button("main", _("Actions"), "color4"), "motors_off": self._gtk.Button("motor-off", _("Disable Motors"), "color4"), } self.buttons["x+"].connect("clicked", self.move, "X", "+") From 3ca3542fb00ca6ebec4622cd62f29ad84d517092 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 14:04:25 +0300 Subject: [PATCH 107/127] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20RU=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D0=94=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D1=81=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B8=20"=D0=97=D0=B0=D0=B1?= =?UTF-8?q?=D0=BB=D0=BE=D0=BA=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ks_includes/config.py | 4 ++- .../locales/ru/LC_MESSAGES/KlipperScreen.mo | Bin 27354 -> 27425 bytes .../locales/ru/LC_MESSAGES/KlipperScreen.po | 5 ++- panels/shutdown.py | 32 ++++++++++-------- 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/ks_includes/config.py b/ks_includes/config.py index 65f7461ef..abc3fc964 100644 --- a/ks_includes/config.py +++ b/ks_includes/config.py @@ -162,7 +162,7 @@ def validate_config(self, config, string="", remove=False): bools = ( 'invert_x', 'invert_y', 'invert_z', '24htime', 'only_heaters', 'show_cursor', 'confirm_estop', 'autoclose_popups', 'use_dpms', 'use_default_menu', 'side_macro_shortcut', 'use-matchbox-keyboard', - 'show_heater_power', "show_scroll_steppers", "auto_open_extrude" + 'show_heater_power', 'show_lock_button', "show_scroll_steppers", "auto_open_extrude" ) strs = ( 'default_printer', 'language', 'print_sort_dir', 'theme', 'screen_blanking_printing', 'font_size', @@ -306,6 +306,8 @@ def _create_configurable_options(self, screen): {"show_heater_power": {"section": "main", "name": _("Show Heater Power"), "type": "binary", "tooltip": _("Current percentage and graph line"), "value": "False", "callback": screen.reload_panels}}, + {"show_lock_button": {"section": "main", "name": _("Show Lock Button"), "type": "binary", + "value": "False", "callback": screen.reload_panels}}, {"show_scroll_steppers": {"section": "main", "name": _("Show Scrollbars Buttons"), "type": "binary", "tooltip": _("Useful for un-responsive touchscreens"), "value": "False", "callback": screen.reload_panels}}, diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo index 3837cb0e12fe7f5f4d22be595745ede0d0beab12..1023edd0347076c57528eef716dcf0c33cd1a0a9 100644 GIT binary patch delta 6423 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 AO8@`> delta 6375 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\n" "Language-Team: Russian \n" "Language: ru\n" @@ -528,6 +528,9 @@ msgstr "Максимальное ускорение" msgid "Max Velocity" msgstr "Максимальная скорость" +msgid "Show Lock Button" +msgstr "Показать блокировку" + msgid "Max:" msgstr "Макс:" diff --git a/panels/shutdown.py b/panels/shutdown.py index da5fd50e9..b4b40ffc8 100644 --- a/panels/shutdown.py +++ b/panels/shutdown.py @@ -28,23 +28,25 @@ def __init__(self, screen, title): lock_screen = self._gtk.Button("lock", _("Lock"), "color3") lock_screen.connect("clicked", self._screen.lock_screen.lock) - # self.show_lock = self._config.get_main_config().getboolean("show_cursor", fallback=False) + self._show_lock_button = self._config.get_main_config().getboolean('show_lock_button', True) 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, 2) - # self.main.attach(restart_ks, 1, 0, 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) - if self._printer and self._printer.state not in {'disconnected', 'startup', 'shutdown', 'error'}: - self.main.attach(estop, 1, 0, 1, 1) - self.main.attach(restart_ks, 2, 0, 1, 1) - self.main.attach(lock_screen,0, 0, 1, 2) - self.main.attach(poweroff, 1, 1, 1, 1) - self.main.attach(restart, 2, 1, 1, 1) - self.content.add(self.main) + if self._show_lock_button: + if self._printer and self._printer.state not in {'disconnected', 'startup', 'shutdown', 'error'}: + self.main.attach(estop, 0, 0, 1, 2) + self.main.attach(restart_ks, 1, 0, 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) + else: + if self._printer and self._printer.state not in {'disconnected', 'startup', 'shutdown', 'error'}: + self.main.attach(estop, 1, 0, 1, 1) + self.main.attach(restart_ks, 2, 0, 1, 1) + self.main.attach(lock_screen,0, 0, 1, 2) + 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): label = Gtk.Label(wrap=True, hexpand=True, vexpand=True) From 72f32bd9c08fb2c2cdb7bdc802d45a689e59c78b Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 14:06:03 +0300 Subject: [PATCH 108/127] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D1=81=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D1=8F=20=D0=BA=D0=BD?= =?UTF-8?q?=D0=BE=D0=BF=D0=BA=D0=B8=20"=D0=97=D0=B0=D0=B1=D0=BB=D0=BE?= =?UTF-8?q?=D0=BA=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/shutdown.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/panels/shutdown.py b/panels/shutdown.py index b4b40ffc8..54297d87d 100644 --- a/panels/shutdown.py +++ b/panels/shutdown.py @@ -28,14 +28,13 @@ def __init__(self, screen, title): lock_screen = self._gtk.Button("lock", _("Lock"), "color3") lock_screen.connect("clicked", self._screen.lock_screen.lock) - self._show_lock_button = self._config.get_main_config().getboolean('show_lock_button', True) + self._show_lock_button = self._config.get_main_config().getboolean('show_lock_button', False) self.main = Gtk.Grid(row_homogeneous=True, column_homogeneous=True) if self._show_lock_button: if self._printer and self._printer.state not in {'disconnected', 'startup', 'shutdown', 'error'}: - self.main.attach(estop, 0, 0, 1, 2) + self.main.attach(estop, 0, 0, 1, 1) self.main.attach(restart_ks, 1, 0, 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) From dd6f65103d43b34a6f6c6dfbe26b33706ee35a86 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 14:07:04 +0300 Subject: [PATCH 109/127] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D1=81=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D1=8F=20=D0=BA=D0=BD?= =?UTF-8?q?=D0=BE=D0=BF=D0=BA=D0=B8=20"=D0=97=D0=B0=D0=B1=D0=BB=D0=BE?= =?UTF-8?q?=D0=BA=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/shutdown.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/panels/shutdown.py b/panels/shutdown.py index 54297d87d..fe9ac0488 100644 --- a/panels/shutdown.py +++ b/panels/shutdown.py @@ -35,8 +35,8 @@ def __init__(self, screen, title): if self._printer and self._printer.state not in {'disconnected', 'startup', 'shutdown', 'error'}: self.main.attach(estop, 0, 0, 1, 1) self.main.attach(restart_ks, 1, 0, 1, 1) - self.main.attach(poweroff, 1, 1, 1, 1) - self.main.attach(restart, 2, 1, 1, 1) + self.main.attach(poweroff, 0, 1, 1, 1) + self.main.attach(restart, 1, 1, 1, 1) self.content.add(self.main) else: if self._printer and self._printer.state not in {'disconnected', 'startup', 'shutdown', 'error'}: From 58a31eb891c26e9036d832d67f0d3df76705effc Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 14:08:15 +0300 Subject: [PATCH 110/127] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D1=81=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D1=8F=20=D0=BA=D0=BD?= =?UTF-8?q?=D0=BE=D0=BF=D0=BA=D0=B8=20"=D0=97=D0=B0=D0=B1=D0=BB=D0=BE?= =?UTF-8?q?=D0=BA=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/shutdown.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/panels/shutdown.py b/panels/shutdown.py index fe9ac0488..9d1086e1c 100644 --- a/panels/shutdown.py +++ b/panels/shutdown.py @@ -32,13 +32,6 @@ def __init__(self, screen, title): self.main = Gtk.Grid(row_homogeneous=True, column_homogeneous=True) if self._show_lock_button: - if self._printer and self._printer.state not in {'disconnected', 'startup', 'shutdown', 'error'}: - self.main.attach(estop, 0, 0, 1, 1) - 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.content.add(self.main) - else: if self._printer and self._printer.state not in {'disconnected', 'startup', 'shutdown', 'error'}: self.main.attach(estop, 1, 0, 1, 1) self.main.attach(restart_ks, 2, 0, 1, 1) @@ -46,6 +39,13 @@ def __init__(self, screen, title): self.main.attach(poweroff, 1, 1, 1, 1) self.main.attach(restart, 2, 1, 1, 1) self.content.add(self.main) + else: + if self._printer and self._printer.state not in {'disconnected', 'startup', 'shutdown', 'error'}: + self.main.attach(estop, 0, 0, 1, 1) + 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.content.add(self.main) def reboot_poweroff(self, widget, method): label = Gtk.Label(wrap=True, hexpand=True, vexpand=True) From 8a06ebdeeb2565983cbdc1b7d2dfc499c7a9aa94 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 14:12:48 +0300 Subject: [PATCH 111/127] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20RU=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D0=98=D0=B7=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B8=D0=BC=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20Chamber=20Fan=20=D0=BD=D0=B0=20=D0=B2=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B8=D0=BB=D1=8F=D1=82=D0=BE=D1=80=D1=8B=20=D0=BA=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D1=80=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../locales/ru/LC_MESSAGES/KlipperScreen.mo | Bin 27425 -> 27427 bytes .../locales/ru/LC_MESSAGES/KlipperScreen.po | 2 +- panels/fan.py | 3 ++- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo index 1023edd0347076c57528eef716dcf0c33cd1a0a9..3706da8cf3fc991d12521fa29688bd108503245b 100644 GIT binary patch delta 1046 zcmXZaOGwmF6vy#1LttZRI+gjXWQxiuvWF>V1RCy=(1!Y(J*LN`64=(j{z0_}7d;jO z5=9Y&2&FK!2m;rE1w{x&ErxbZ)W$$0tnbfzSD$;%z5jF1z4!lgHu7vXGIb;#Hk#SV zz-%?%!8*)hF}}iDoW>^nhAT1NYjy~0unYq%#X;PJ!#+QT<-`*{ev8`YJtpvLuZ7DW zE|J(lqU01su^HE4kB|GYg7_95!-rUnKd}mn`phb^9+TLLs+U1+cn{U+BUFPgu?9c% zg=QNV%#qlO(bKL_6UK?Ve4Iu#bPaXVyWYpBLNBl$-+2q(k~8k4yHWLePzTAN>Wzd9 zb~1S27fjaDZ5AIDKw{vB80FH}Q|r~@R=vzGns zI0J21z&b5JZCH81HIPK*58`?Zkk_&yyn!>=jYlto=>yI^2Y9sCpUHg4a-u-a$3^1Z(hJ ze_&S0V2(r!+JGyx6)Ol2`Z$eh=qzfdSG{*pg&yNNeB;e~!^hlC8&UPTP#ejh>P-X; zHZ!>4KbXdi#P4whF8cZ6w7Z%l)|2l+6+DOf{<@D}p$gAn6XtLOMvl9<71ihv9>(Ab z0~N}lj%psY!+)p-%1*fXwWuGPQAgk7^JCr%sJqVMHhhFS@-G<1@2G|rQ5#5{G`q?A z*3Cc*=CM{Epc;yvat$O<`R%wGQ^;-ED4xd|?8XBb=I|ai;{tYI{b|?0I5rYr!d85a zan`pv1~C$)gRbKQo*{0>c6^9SCxklMd2eXQJ;oSP#zs*){(*b&FX}Pw9_GPn9(AH2 zitoZojO)h~1HIk}T!~q1!%3h2iiO0#P)Gj<_hZ$F*&$5hdVGpS_yI%s5tn1mn@838 Ti4C}bQ#+zfd#A>FUzYy|)%=fV diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po index 4930539f0..58ebae9da 100644 --- a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.po @@ -647,7 +647,7 @@ msgstr[1] "Пакеты будут обновляться" msgstr[2] "Пакеты будут обновляться" msgid "Part Fan" -msgstr "Вентилятор обдува детали" +msgstr "Вентиляторы обдува детали" msgid "Chamber Fan" msgstr "Вентиляторы камеры" diff --git a/panels/fan.py b/panels/fan.py index 93b5c2d76..e6348c75d 100644 --- a/panels/fan.py +++ b/panels/fan.py @@ -57,7 +57,8 @@ def add_fan(self, fan): changeable = any(fan.startswith(x) or fan == x for x in CHANGEABLE_FANS) name = Gtk.Label(halign=Gtk.Align.START, valign=Gtk.Align.CENTER, hexpand=True, vexpand=True, wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR) - fan_name = _("Part Fan") if fan == "fan" else fan.split()[1] + fan_name = _("Part Fan") if fan == "fan" else _("Chamber Fan") + # fan_name = _("Part Fan") if fan == "fan" else fan.split()[1] name.set_markup(f"\n{fan_name}\n") fan_col = Gtk.Box(spacing=5) From 13145d9c59a3f5e6648dc8dd95092fc5a6d31243 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 14:15:00 +0300 Subject: [PATCH 112/127] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B0=D0=BD=D0=B5=D0=BB=D0=B8=20"?= =?UTF-8?q?=D0=A1=D0=B5=D1=82=D1=8C":=20-=20=D1=83=D0=B1=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=BE=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20security,=20frequency,=20chan,=20signal=5Flevel,?= =?UTF-8?q?=20BSSID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/network.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/panels/network.py b/panels/network.py index 469e98db6..a1f7e5a74 100644 --- a/panels/network.py +++ b/panels/network.py @@ -375,10 +375,10 @@ def update_network_info(self, net): self.networks[net['BSSID']]['info'].set_markup( "" f"{info}" - f"{net['security']}\n" + # f"{net['security']}\n" f"{max_bitrate}\n" - f"{net['frequency']} Ghz {chan} {net['signal_level']} %\n" - f"{net['BSSID']}" + # f"{net['frequency']} Ghz {chan} {net['signal_level']} %\n" + # f"{net['BSSID']}" "" ) From 7c93521985233d954f938df4dbebb6fc08070039 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 14:15:59 +0300 Subject: [PATCH 113/127] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B0=D0=BD=D0=B5=D0=BB=D0=B8=20"?= =?UTF-8?q?=D0=A1=D0=B5=D1=82=D1=8C":=20-=20=D1=83=D0=B1=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=BE=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20security,=20chan,=20signal=5Flevel,=20BSSID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/network.py | 1 + 1 file changed, 1 insertion(+) diff --git a/panels/network.py b/panels/network.py index a1f7e5a74..f8510fd72 100644 --- a/panels/network.py +++ b/panels/network.py @@ -377,6 +377,7 @@ def update_network_info(self, net): f"{info}" # f"{net['security']}\n" f"{max_bitrate}\n" + f"{net['frequency']} Ghz" # f"{net['frequency']} Ghz {chan} {net['signal_level']} %\n" # f"{net['BSSID']}" "" From 2eb3066c71dd0138bf4847a579db872218ea9b4f Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 14:18:40 +0300 Subject: [PATCH 114/127] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=B0=D0=BD=D0=B5=D0=BB=D0=B8=20"?= =?UTF-8?q?=D0=A1=D0=B5=D1=82=D1=8C":=20-=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B0?= =?UTF-8?q?=20QR-code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/network.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/panels/network.py b/panels/network.py index f8510fd72..2a99fd422 100644 --- a/panels/network.py +++ b/panels/network.py @@ -15,6 +15,7 @@ class Panel(ScreenPanel): def __init__(self, screen, title): title = title or _("Network") super().__init__(screen, title) + self.filename = "/home/pi/qrcode.png" self.last_drop_time = datetime.now() self.show_add = False try: @@ -134,6 +135,11 @@ def add_network(self, bssid): delete.set_hexpand(False) delete.set_halign(Gtk.Align.END) + qrcode = self._gtk.Button("qrcode", None, "color1", .88) + qrcode.connect("clicked", self.show_fullscreen_qrcode) + qrcode.set_hexpand(False) + qrcode.set_halign(Gtk.Align.END) + buttons = Gtk.Box(spacing=5) name = Gtk.Label(hexpand=True, halign=Gtk.Align.START, wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR) @@ -144,6 +150,7 @@ def add_network(self, bssid): name.set_markup(f"{ssid}") if net['known']: buttons.add(delete) + buttons.add(qrcode) buttons.add(connect) info = Gtk.Label(halign=Gtk.Align.START) @@ -449,3 +456,24 @@ def toggle_wifi(self, switch, gparams): self.reload_networks() else: self.reload_button.hide() + + def show_fullscreen_qrcode(self, widget): + + curr_ip = self.sdbus_nm.get_ip_address() + logging.info(f"Generate QR-code with IP: {curr_ip}") + os.system(f'qrencode -s 10 -l H -o "{self.filename}" "{curr_ip}"') + logging.info(f"Generate QR-code") + + buttons = [ + {"name": _("Close"), "response": Gtk.ResponseType.CANCEL} + ] + + image = Gtk.Image.new_from_file(self.filename) + box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) + box.add(image) + box.set_vexpand(True) + self._gtk.Dialog(self.filename, buttons, box, self._gtk.remove_dialog) + logging.info(f"Show QR-code") + + def close_fullscreen_qrcode(self, dialog): + self._gtk.remove_dialog \ No newline at end of file From b01df8b1c824ec6815642d5a9e15d7d31a3cdc25 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 14:22:17 +0300 Subject: [PATCH 115/127] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BD=D0=B5=D0=BE=D0=B1=D1=85=D0=BE=D0=B4=D0=B8=D0=BC=D1=8B?= =?UTF-8?q?=D1=85=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82=D0=BE=D0=B2:=20-=20qren?= =?UTF-8?q?code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/system-dependencies.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/system-dependencies.json b/scripts/system-dependencies.json index 0fb297cc5..9c683af06 100644 --- a/scripts/system-dependencies.json +++ b/scripts/system-dependencies.json @@ -12,7 +12,8 @@ "librsvg2-common", "libopenjp2-7", "libdbus-glib-1-dev", - "autoconf" + "autoconf", + "qrencode" ], "arch": [ "cairo", From 4094dc70b3dd536c31fe2e1951140813f9f65196 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 14:28:09 +0300 Subject: [PATCH 116/127] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=20gcodes.py:=20-=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81=D0=B0=20g-?= =?UTF-8?q?=D0=BA=D0=BE=D0=B4=D0=BE=D0=B2=20=D0=B2=20=D0=BA=D0=BE=D1=80?= =?UTF-8?q?=D0=BD=D0=B5=D0=B2=D1=83=D1=8E=20=D0=B4=D0=B8=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/gcodes.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/panels/gcodes.py b/panels/gcodes.py index 1ead19986..7eacb6d1c 100644 --- a/panels/gcodes.py +++ b/panels/gcodes.py @@ -156,6 +156,9 @@ def create_item(self, item): rename = Gtk.Button(hexpand=False, vexpand=False, can_focus=False, always_show_image=True) rename.get_style_context().add_class("color2") rename.set_image(self._gtk.Image("files", self.list_button_size, self.list_button_size)) + move = Gtk.Button(hexpand=False, vexpand=False, can_focus=False, always_show_image=True) + move.get_style_context().add_class("color3") + move.set_image(self._gtk.Image("sd", self.list_button_size, self.list_button_size)) itemname = Gtk.Label(hexpand=True, halign=Gtk.Align.START, ellipsize=Pango.EllipsizeMode.END) itemname.get_style_context().add_class("print-filename") itemname.set_markup(f"{basename}") @@ -172,6 +175,7 @@ def create_item(self, item): icon.connect("clicked", self.confirm_print, path) image_args = (path, icon, self.thumbsize / 2, True, "file") delete.connect("clicked", self.confirm_delete_file, f"gcodes/{path}") + move.connect("clicked", self.confirm_move_file, f"gcodes/{path}") rename.connect("clicked", self.show_rename, f"gcodes/{path}") action_icon = "printer" if self._printer.extrudercount > 0 else "load" action = self._gtk.Button(action_icon, style="color3") @@ -248,6 +252,30 @@ def confirm_delete_directory(self, widget, dirpath): params ) + + def confirm_move_file(self, widget, filepath): + logging.debug(f"Sending move_file {filepath}") + filename = filepath.split("/")[-1] + dest = "gcodes/" + filename + params = {"source": f"{filepath}", + "dest": f"{dest}"} + gcodes_path = "/home/pi/printer_data/" + check_file = os.path.exists(gcodes_path + dest) + if check_file: + self._screen._confirm_send_action( + None, + _("A file with this name already exists") + "\n\n" + _("You may be trying to move a file that is already in the main directory") + "\n\n" + _("Replace it?") + "\n\n" + filepath, + "server.files.move", + params + ) + else: + self._screen._confirm_send_action( + None, + _("This function is designed to move a file to the main directory") + "\n\n"+ _("Move file to main directory?") + "\n\n" + filepath, + "server.files.move", + params + ) + def back(self): if self.showing_rename: self.hide_rename() @@ -368,6 +396,9 @@ def confirm_print_response(self, dialog, response_id, filename): elif response_id == Gtk.ResponseType.OK: logging.info(f"Starting print: {filename}") self._screen._ws.klippy.print_start(filename) + elif response_id == Gtk.ResponseType.APPLY: + logging.info(f"Move file {filename} to internal storage") + self.confirm_move_file(self, f"gcodes/{filename}") elif response_id == Gtk.ResponseType.REJECT: self.confirm_delete_file(None, f"gcodes/{filename}") From a0f153e3def1c32f3018c2b4461b5e5d9c800a40 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 14:39:36 +0300 Subject: [PATCH 117/127] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=20gcodes.py:=20-=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81=D0=B0=20g-?= =?UTF-8?q?=D0=BA=D0=BE=D0=B4=D0=BE=D0=B2=20=D0=B2=20=D0=BA=D0=BE=D1=80?= =?UTF-8?q?=D0=BD=D0=B5=D0=B2=D1=83=D1=8E=20=D0=B4=D0=B8=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/gcodes.py | 36 ++- panels/gcodes_old.py | 611 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 635 insertions(+), 12 deletions(-) create mode 100644 panels/gcodes_old.py diff --git a/panels/gcodes.py b/panels/gcodes.py index 7eacb6d1c..973f1840a 100644 --- a/panels/gcodes.py +++ b/panels/gcodes.py @@ -242,17 +242,6 @@ def confirm_delete_file(self, widget, filepath): params ) - def confirm_delete_directory(self, widget, dirpath): - logging.debug(f"Sending delete_directory {dirpath}") - params = {"path": f"{dirpath}", "force": True} - self._screen._confirm_send_action( - None, - _("Delete Directory?") + "\n\n" + dirpath, - "server.files.delete_directory", - params - ) - - def confirm_move_file(self, widget, filepath): logging.debug(f"Sending move_file {filepath}") filename = filepath.split("/")[-1] @@ -276,6 +265,16 @@ def confirm_move_file(self, widget, filepath): params ) + def confirm_delete_directory(self, widget, dirpath): + logging.debug(f"Sending delete_directory {dirpath}") + params = {"path": f"{dirpath}", "force": True} + self._screen._confirm_send_action( + None, + _("Delete Directory?") + "\n\n" + dirpath, + "server.files.delete_directory", + params + ) + def back(self): if self.showing_rename: self.hide_rename() @@ -352,6 +351,13 @@ def confirm_print(self, widget, filename): {"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL, "style": 'dialog-secondary'} ] + buttons_usb = [ + {"name": _("Delete"), "response": Gtk.ResponseType.REJECT, "style": 'dialog-error'}, + {"name": _("Resave"), "response": Gtk.ResponseType.APPLY, "style": 'dialog-secondary'}, + {"name": action, "response": Gtk.ResponseType.OK, "style": 'dialog-primary'}, + {"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL, "style": 'dialog-secondary'} + ] + label = Gtk.Label( hexpand=True, vexpand=True, lines=2, wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR, @@ -387,7 +393,13 @@ def confirm_print(self, widget, filename): inside_box.pack_start(info_box, True, True, 0) main_box.pack_start(inside_box, True, True, 0) - self._gtk.Dialog(f'{action} {filename}', buttons, main_box, self.confirm_print_response, filename) + # self._gtk.Dialog(f'{action} {filename}', buttons, main_box, self.confirm_print_response, filename) + + dir_path = "/home/pi/printer_data/gcodes/" + if os.path.isfile(f"{dir_path} + {filename}"): + self._gtk.Dialog(f'{action} {filename}', buttons, main_box, self.confirm_print_response, filename) + else: + self._gtk.Dialog(f'{action} {filename}', buttons_usb, main_box, self.confirm_print_response, filename) def confirm_print_response(self, dialog, response_id, filename): self._gtk.remove_dialog(dialog) diff --git a/panels/gcodes_old.py b/panels/gcodes_old.py new file mode 100644 index 000000000..808ea28f0 --- /dev/null +++ b/panels/gcodes_old.py @@ -0,0 +1,611 @@ +import logging +import os +import gi + +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk, Pango +from datetime import datetime +from ks_includes.screen_panel import ScreenPanel +from ks_includes.KlippyGtk import find_widget +from ks_includes.widgets.flowboxchild_extended import PrintListItem + + +def format_label(widget): + label = find_widget(widget, Gtk.Label) + if label is not None: + label.set_line_wrap_mode(Pango.WrapMode.CHAR) + label.set_line_wrap(True) + label.set_ellipsize(Pango.EllipsizeMode.END) + label.set_lines(3) + + +class Panel(ScreenPanel): + def __init__(self, screen, title): + title = title or (_("Print") if self._printer.extrudercount > 0 else _("Gcodes")) + super().__init__(screen, title) + sortdir = self._config.get_main_config().get("print_sort_dir", "name_asc") + sortdir = sortdir.split('_') + self.sort_items = { + "name": _("Name"), + "date": _("Date"), + "size": _("Size"), + } + if sortdir[0] not in self.sort_items or sortdir[1] not in ["asc", "desc"]: + sortdir = ["name", "asc"] + self.sort_current = [sortdir[0], 0 if sortdir[1] == "asc" else 1] # 0 for asc, 1 for desc + self.sort_icon = ["arrow-up", "arrow-down"] + self.source = "" + self.time_24 = self._config.get_main_config().getboolean("24htime", True) + self.showing_rename = False + self.loading = False + self.cur_directory = 'gcodes' + self.list_button_size = self._gtk.img_scale * self.bts + + self.headerbox = Gtk.Box(hexpand=True, vexpand=False) + n = 0 + for name, val in self.sort_items.items(): + s = self._gtk.Button(None, val, f"color{n % 4 + 1}", .5, Gtk.PositionType.RIGHT, 1) + s.get_style_context().add_class("buttons_slim") + if name == self.sort_current[0]: + s.set_image(self._gtk.Image(self.sort_icon[self.sort_current[1]], self._gtk.img_scale * self.bts)) + s.connect("clicked", self.change_sort, name) + self.labels[f'sort_{name}'] = s + self.headerbox.add(s) + n += 1 + + self.refresh = self._gtk.Button("refresh", style=f"color{n % 4 + 1}", scale=self.bts) + self.refresh.get_style_context().add_class("buttons_slim") + self.refresh.connect('clicked', self._refresh_files) + n += 1 + self.headerbox.add(self.refresh) + + self.switch_mode = self._gtk.Button("fine-tune", style=f"color{n % 4 + 1}", scale=self.bts) + self.switch_mode.get_style_context().add_class("buttons_slim") + self.switch_mode.connect('clicked', self.switch_view_mode) + n += 1 + self.headerbox.add(self.switch_mode) + + self.loading_msg = _('Loading...') + 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}") + + self.flowbox = Gtk.FlowBox(selection_mode=Gtk.SelectionMode.NONE, + column_spacing=0, row_spacing=0) + list_mode = self._config.get_main_config().get("print_view", 'thumbs') + logging.info(list_mode) + self.list_mode = list_mode == 'list' + if self.list_mode: + self.flowbox.set_min_children_per_line(1) + self.flowbox.set_max_children_per_line(1) + else: + columns = 3 if self._screen.vertical_mode else 4 + self.flowbox.set_min_children_per_line(columns) + self.flowbox.set_max_children_per_line(columns) + + self.scroll = self._gtk.ScrolledWindow() + self.scroll.add(self.flowbox) + + self.main = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, vexpand=True) + self.main.add(self.headerbox) + self.main.add(self.labels['path']) + self.main.add(self.scroll) + self.content.add(self.main) + self.set_loading(True) + self._screen._ws.klippy.get_dir_info(self.load_files, self.cur_directory) + + def switch_view_mode(self, widget): + self.list_mode ^= True + logging.info(f"lista {self.list_mode}") + if self.list_mode: + self.flowbox.set_min_children_per_line(1) + self.flowbox.set_max_children_per_line(1) + else: + columns = 3 if self._screen.vertical_mode else 4 + self.flowbox.set_min_children_per_line(columns) + self.flowbox.set_max_children_per_line(columns) + self._config.set("main", "print_view", 'list' if self.list_mode else 'thumbs') + self._config.save_user_config_options() + self._refresh_files() + + def activate(self): + if self.cur_directory != "gcodes": + self.change_dir() + self._screen.files.add_callback(self._callback) + + def deactivate(self): + self._screen.files.remove_callback(self._callback) + + def create_item(self, item): + fbchild = PrintListItem() + fbchild.set_date(item['modified']) + fbchild.set_size(item['size']) + if 'dirname' in item: + if item['dirname'].startswith("."): + return + name = item['dirname'] + path = f"{self.cur_directory}/{name}" + fbchild.set_as_dir(True) + elif 'filename' in item: + if (item['filename'].startswith(".") or + os.path.splitext(item['filename'])[1] not in {'.gcode', '.gco', '.g'}): + return + name = item['filename'] + path = f"{self.cur_directory}/{name}" + path = path.replace('gcodes/', '') + else: + logging.error(f"Unknown item {item}") + return + basename = os.path.splitext(name)[0] + fbchild.set_path(path) + fbchild.set_name(basename.casefold()) + if self.list_mode: + label = Gtk.Label(label=basename, hexpand=True, vexpand=False) + format_label(label) + info = Gtk.Label( + hexpand=True, halign=Gtk.Align.START, xalign=0, + wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR, + ) + info.get_style_context().add_class("print-info") + info.set_markup(self.get_info_str(item, path)) + delete = Gtk.Button(hexpand=False, vexpand=False, can_focus=False, always_show_image=True) + delete.get_style_context().add_class("color1") + delete.set_image(self._gtk.Image("delete", self.list_button_size, self.list_button_size)) + rename = Gtk.Button(hexpand=False, vexpand=False, can_focus=False, always_show_image=True) + rename.get_style_context().add_class("color2") + rename.set_image(self._gtk.Image("files", self.list_button_size, self.list_button_size)) + move = Gtk.Button(hexpand=False, vexpand=False, can_focus=False, always_show_image=True) + move.get_style_context().add_class("color3") + move.set_image(self._gtk.Image("sd", self.list_button_size, self.list_button_size)) + itemname = Gtk.Label(hexpand=True, halign=Gtk.Align.START, ellipsize=Pango.EllipsizeMode.END) + itemname.get_style_context().add_class("print-filename") + itemname.set_markup(f"{basename}") + icon = Gtk.Button() + row = Gtk.Grid(hexpand=True, vexpand=False, valign=Gtk.Align.CENTER) + row.get_style_context().add_class("frame-item") + if self._screen.width >= 400: + row.attach(icon, 0, 0, 1, 2) + row.attach(itemname, 1, 0, 3, 1) + row.attach(info, 1, 1, 1, 1) + row.attach(rename, 2, 1, 1, 1) + row.attach(delete, 3, 1, 1, 1) + # row.attach(move, 4, 1, 1, 1) + if 'filename' in item: + icon.connect("clicked", self.confirm_print, path) + image_args = (path, icon, self.thumbsize / 2, True, "file") + delete.connect("clicked", self.confirm_delete_file, f"gcodes/{path}") + move.connect("clicked", self.confirm_move_file, f"gcodes/{path}") + rename.connect("clicked", self.show_rename, f"gcodes/{path}") + action_icon = "printer" if self._printer.extrudercount > 0 else "load" + action = self._gtk.Button(action_icon, style="color3") + action.connect("clicked", self.confirm_print, path) + action.set_hexpand(False) + action.set_vexpand(False) + action.set_halign(Gtk.Align.END) + if self._screen.width >= 400: + row.attach(action, 4, 0, 1, 2) + else: + icon.get_style_context().add_class("color3") + row.attach(icon, 4, 0, 1, 2) + elif 'dirname' in item: + icon.connect("clicked", self.change_dir, path) + image_args = (None, icon, self.thumbsize / 2, True, "folder") + delete.connect("clicked", self.confirm_delete_directory, path) + rename.connect("clicked", self.show_rename, path) + action = self._gtk.Button("load", style="color3") + action.connect("clicked", self.change_dir, path) + action.set_hexpand(False) + action.set_vexpand(False) + action.set_halign(Gtk.Align.END) + row.attach(action, 4, 0, 1, 2) + else: + return + fbchild.add(row) + else: # Thumbnail view + icon = self._gtk.Button(label=basename) + if 'filename' in item: + icon.connect("clicked", self.confirm_print, path) + image_args = (path, icon, self.thumbsize, False, "file") + elif 'dirname' in item: + icon.connect("clicked", self.change_dir, path) + image_args = (None, icon, self.thumbsize, False, "folder") + else: + return + fbchild.add(icon) + self.image_load(*image_args) + return fbchild + + def show_path(self): + self.labels['path'].set_vexpand(False) + if self.cur_directory == 'gcodes': + self.labels['path'].hide() + else: + self.labels['path'].set_text(self.cur_directory) + self.labels['path'].show() + + def image_load(self, filepath, widget, size=-1, small=True, iconname=None): + pixbuf = self.get_file_image(filepath, size, size, small) + if pixbuf is not None: + widget.set_image(Gtk.Image.new_from_pixbuf(pixbuf)) + elif iconname is not None: + widget.set_image(self._gtk.Image(iconname, size, size)) + format_label(widget) + + def confirm_delete_file(self, widget, filepath): + logging.debug(f"Sending delete_file {filepath}") + params = {"path": f"{filepath}"} + self._screen._confirm_send_action( + None, + _("Delete File?") + "\n\n" + filepath, + "server.files.delete_file", + params + ) + + def confirm_move_file(self, widget, filepath): + logging.debug(f"Sending move_file {filepath}") + filename = filepath.split("/")[-1] + dest = "gcodes/" + filename + params = {"source": f"{filepath}", + "dest": f"{dest}"} + gcodes_path = "/home/pi/printer_data/" + check_file = os.path.exists(gcodes_path + dest) + if check_file: + self._screen._confirm_send_action( + None, + _("A file with this name already exists") + "\n\n" + _("You may be trying to move a file that is already in the main directory") + "\n\n" + _("Replace it?") + "\n\n" + filepath, + "server.files.move", + params + ) + else: + self._screen._confirm_send_action( + None, + _("This function is designed to move a file to the main directory") + "\n\n"+ _("Move file to main directory?") + "\n\n" + filepath, + "server.files.move", + params + ) + + def confirm_delete_directory(self, widget, dirpath): + logging.debug(f"Sending delete_directory {dirpath}") + params = {"path": f"{dirpath}", "force": True} + self._screen._confirm_send_action( + None, + _("Delete Directory?") + "\n\n" + dirpath, + "server.files.delete_directory", + params + ) + + def back(self): + if self.showing_rename: + self.hide_rename() + return True + if self.cur_directory != 'gcodes': + self.change_dir(None, os.path.dirname(self.cur_directory)) + return True + return False + + def change_dir(self, widget=None, directory='gcodes'): + if directory == '': + directory = 'gcodes' + if directory != self.cur_directory: + logging.info(f'Changing directory to: {directory}') + self.cur_directory = directory + self.show_path() + self._refresh_files() + + def change_sort(self, widget, key): + if self.sort_current[0] == key: + self.sort_current[1] = (self.sort_current[1] + 1) % 2 + else: + oldkey = self.sort_current[0] + logging.info(f"Changing from {oldkey} to {key}") + self.labels[f'sort_{oldkey}'].set_image(None) + self.labels[f'sort_{oldkey}'].show_all() + self.sort_current = [key, 0] + self.labels[f'sort_{key}'].set_image(self._gtk.Image(self.sort_icon[self.sort_current[1]], + self._gtk.img_scale * self.bts)) + self.labels[f'sort_{key}'].show() + + self.set_sort() + + self._config.set("main", "print_sort_dir", f'{key}_{"asc" if self.sort_current[1] == 0 else "desc"}') + self._config.save_user_config_options() + + def set_sort(self): + reverse = self.sort_current[1] != 0 + if self.sort_current[0] == "name": + self.flowbox.set_sort_func(self.sort_names, reverse) + elif self.sort_current[0] == "date": + self.flowbox.set_sort_func(self.sort_dates, reverse) + elif self.sort_current[0] == "size": + self.flowbox.set_sort_func(self.sort_sizes, reverse) + + @staticmethod + def sort_names(a: PrintListItem, b: PrintListItem, reverse): + if a.get_is_dir() - b.get_is_dir() != 0: + return a.get_is_dir() - b.get_is_dir() + if a.get_name() < b.get_name(): + return 1 if reverse else -1 + if a.get_name() > b.get_name(): + return -1 if reverse else 1 + return 0 + + @staticmethod + def sort_sizes(a: PrintListItem, b: PrintListItem, reverse): + if a.get_is_dir() - b.get_is_dir() != 0: + return a.get_is_dir() - b.get_is_dir() + return b.get_size() - a.get_size() if reverse else a.get_size() - b.get_size() + + @staticmethod + def sort_dates(a: PrintListItem, b: PrintListItem, reverse): + if a.get_is_dir() - b.get_is_dir() != 0: + return a.get_is_dir() - b.get_is_dir() + return b.get_date() - a.get_date() if reverse else a.get_date() - b.get_date() + + def confirm_print(self, widget, filename): + action = _("Print") if self._printer.extrudercount > 0 else _("Start") + + buttons = [ + {"name": _("Delete"), "response": Gtk.ResponseType.REJECT, "style": 'dialog-error'}, + {"name": action, "response": Gtk.ResponseType.OK, "style": 'dialog-primary'}, + {"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL, "style": 'dialog-secondary'} + ] + + buttons_usb = [ + {"name": _("Delete"), "response": Gtk.ResponseType.REJECT, "style": 'dialog-error'}, + {"name": _("Resave"), "response": Gtk.ResponseType.APPLY, "style": 'dialog-secondary'}, + {"name": action, "response": Gtk.ResponseType.OK, "style": 'dialog-primary'}, + {"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL, "style": 'dialog-secondary'} + ] + + label = Gtk.Label( + hexpand=True, vexpand=True, lines=2, + wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR, + ellipsize=Pango.EllipsizeMode.END + ) + label.set_markup(f"{filename}") + + main_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, vexpand=True) + main_box.pack_start(label, False, False, 0) + + orientation = Gtk.Orientation.VERTICAL if self._screen.vertical_mode else Gtk.Orientation.HORIZONTAL + inside_box = Gtk.Box(orientation=orientation, vexpand=True) + + if self._screen.vertical_mode: + width = self._screen.width * .9 + height = (self._screen.height - self._gtk.dialog_buttons_height - self._gtk.font_size * 5) * .45 + else: + width = self._screen.width * .5 + height = (self._screen.height - self._gtk.dialog_buttons_height - self._gtk.font_size * 6) + pixbuf = self.get_file_image(filename, width, height) + if pixbuf is not None: + image = Gtk.Image.new_from_pixbuf(pixbuf) + image_button = self._gtk.Button() + image_button.set_image(image) + image_button.connect("clicked", self.show_fullscreen_thumbnail, filename) + inside_box.pack_start(image_button, True, True, 0) + + info_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, vexpand=True) + fileinfo = Gtk.Label( + label=self.get_file_info_extended(filename), use_markup=True, ellipsize=Pango.EllipsizeMode.END + ) + info_box.pack_start(fileinfo, True, True, 0) + + inside_box.pack_start(info_box, True, True, 0) + main_box.pack_start(inside_box, True, True, 0) + + dir_path = "/home/pi/printer_data/gcodes/" + if os.path.isfile(f"{dir_path} + {filename}"): + self._gtk.Dialog(f'{action} {filename}', buttons, main_box, self.confirm_print_response, filename) + else: + self._gtk.Dialog(f'{action} {filename}', buttons_usb, main_box, self.confirm_print_response, filename) + + def confirm_print_response(self, dialog, response_id, filename): + self._gtk.remove_dialog(dialog) + if response_id == Gtk.ResponseType.CANCEL: + return + elif response_id == Gtk.ResponseType.OK: + logging.info(f"Starting print: {filename}") + self._screen._ws.klippy.print_start(filename) + elif response_id == Gtk.ResponseType.APPLY: + logging.info(f"Move file {filename} to internal storage") + self.confirm_move_file(self, f"gcodes/{filename}") + elif response_id == Gtk.ResponseType.REJECT: + self.confirm_delete_file(None, f"gcodes/{filename}") + + def get_info_str(self, item, path): + info = "" + if "modified" in item: + info += _("Modified") + if self.time_24: + info += f': {datetime.fromtimestamp(item["modified"]):%Y/%m/%d %H:%M}\n' + else: + info += f': {datetime.fromtimestamp(item["modified"]):%Y/%m/%d %I:%M %p}\n' + if "size" in item: + info += _("Size") + f': {self.format_size(item["size"])}\n' + if 'filename' in item: + info += self.get_file_info(path) + return info + + def get_file_info(self, path): + info = "" + fileinfo = self._screen.files.get_file_info(path) + if "layer_height" in fileinfo: + info += _("Layer Height") + f': {fileinfo["layer_height"]} ' + _("mm") + '\n' + if "filament_type" in fileinfo: + info += _("Filament") + f': {fileinfo["filament_type"]}\n' + if "filament_name" in fileinfo: + info += f'{fileinfo["filament_name"]}\n' + if "estimated_time" in fileinfo: + info += _("Estimated Time") + f': {self.format_time(fileinfo["estimated_time"])}' + return info + + def get_file_info_extended(self, filename): + fileinfo = self._screen.files.get_file_info(filename) + info = "" + if "modified" in fileinfo: + info += _("Modified") + if self.time_24: + info += f': {datetime.fromtimestamp(fileinfo["modified"]):%Y/%m/%d %H:%M}\n' + else: + info += f': {datetime.fromtimestamp(fileinfo["modified"]):%Y/%m/%d %I:%M %p}\n' + if "layer_height" in fileinfo: + info += _("Layer Height") + f': {fileinfo["layer_height"]} ' + _("mm") + '\n' + if "filament_type" in fileinfo or "filament_name" in fileinfo: + info += _("Filament") + ':\n' + if "filament_type" in fileinfo: + info += f' {fileinfo["filament_type"]}\n' + if "filament_name" in fileinfo: + info += f' {fileinfo["filament_name"]}\n' + if "filament_weight_total" in fileinfo: + info += f' {fileinfo["filament_weight_total"]:.2f} ' + _("g") + '\n' + if "nozzle_diameter" in fileinfo: + info += _("Nozzle diameter") + f': {fileinfo["nozzle_diameter"]} ' + _("mm") + '\n' + if "slicer" in fileinfo: + info += ( + _("Slicer") + + f': {fileinfo["slicer"]} ' + f'{fileinfo["slicer_version"] if "slicer_version" in fileinfo else ""}\n' + ) + if "size" in fileinfo: + info += _("Size") + f': {self.format_size(fileinfo["size"])}\n' + if "estimated_time" in fileinfo: + info += _("Estimated Time") + f': {self.format_time(fileinfo["estimated_time"])}\n' + if "job_id" in fileinfo: + history = self._screen.apiclient.send_request(f"server/history/job?uid={fileinfo['job_id']}") + if history and history['job']['status'] == "completed": + info += _("Last Duration") + f": {self.format_time(history['job']['print_duration'])}" + return info + + def load_files(self, result, method, params): + start = datetime.now() + self.set_loading(True) + if not result.get("result") or not isinstance(result["result"], dict): + logging.info(result) + return + items = [self.create_item(item) for item in [*result["result"]["dirs"], *result["result"]["files"]]] + for item in filter(None, items): + self.flowbox.add(item) + self.set_sort() + self.set_loading(False) + logging.info(f"Loaded in {(datetime.now() - start).total_seconds():.3f} seconds") + + def delete_from_list(self, path): + logging.info(f"deleting {path}") + for item in self.flowbox.get_children(): + if item.get_path() in {path, f"gcodes/{path}"}: + logging.info("found removing") + self.flowbox.remove(item) + return True + + def add_item_from_callback(self, action, data): + item = data['item'] + if 'source_item' in data: + self.delete_from_list(data['source_item']['path']) + else: + self.delete_from_list(item['path']) + path = os.path.join("gcodes", item["path"]) + if self.cur_directory != os.path.dirname(path): + return + if action in {"create_dir", "move_dir"}: + item.update({"path": path, "dirname": os.path.split(item["path"])[1]}) + else: + item.update({"path": path, "filename": os.path.split(item["path"])[1]}) + fbchild = self.create_item(item) + if fbchild: + self.flowbox.add(fbchild) + self.flowbox.invalidate_sort() + self.flowbox.show_all() + + def _callback(self, action, data): + logging.info(f"{action}: {data}") + if action in {"create_dir", "create_file"}: + self.add_item_from_callback(action, data) + elif action == "delete_file": + self.delete_from_list(data['item']["path"]) + elif action == "delete_dir": + self.delete_from_list(os.path.join("gcodes", data['item']["path"])) + elif action in {"modify_file", "move_file", "move_dir"}: + if "path" in data['item'] and data['item']["path"].startswith("gcodes/"): + data['item']["path"] = data['item']["path"][7:] + self.add_item_from_callback(action, data) + + def _refresh_files(self, *args): + logging.info("Refreshing") + self.set_loading(True) + for child in self.flowbox.get_children(): + self.flowbox.remove(child) + self._screen._ws.klippy.get_dir_info(self.load_files, self.cur_directory) + + def set_loading(self, loading): + self.loading = loading + for child in self.headerbox.get_children(): + child.set_sensitive(not loading) + self._gtk.Button_busy(self.refresh, loading) + if loading: + self.labels['path'].set_text(self.loading_msg) + self.labels['path'].show() + return + self.show_path() + self.content.show_all() + + def show_rename(self, widget, fullpath): + self.source = fullpath + logging.info(self.source) + + for child in self.content.get_children(): + self.content.remove(child) + + if "rename_file" not in self.labels: + self._create_rename_box(fullpath) + self.content.add(self.labels['rename_file']) + self.labels['new_name'].set_text(fullpath[7:]) + self.labels['new_name'].grab_focus_without_selecting() + self.showing_rename = True + + def _create_rename_box(self, fullpath): + lbl = Gtk.Label(label=_("Rename/Move:"), halign=Gtk.Align.START, hexpand=False) + self.labels['new_name'] = Gtk.Entry(text=fullpath, hexpand=True) + self.labels['new_name'].connect("activate", self.rename) + self.labels['new_name'].connect("focus-in-event", self._screen.show_keyboard) + + save = self._gtk.Button("complete", _("Save"), "color3") + save.set_hexpand(False) + save.connect("clicked", self.rename) + + box = Gtk.Box() + box.pack_start(self.labels['new_name'], True, True, 5) + box.pack_start(save, False, False, 5) + + self.labels['rename_file'] = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5, + hexpand=True, vexpand=True, valign=Gtk.Align.CENTER) + self.labels['rename_file'].pack_start(lbl, True, True, 5) + self.labels['rename_file'].pack_start(box, True, True, 5) + + def hide_rename(self): + self._screen.remove_keyboard() + for child in self.content.get_children(): + self.content.remove(child) + self.content.add(self.main) + self.content.show() + self.showing_rename = False + + def rename(self, widget): + params = {"source": self.source, "dest": f"gcodes/{self.labels['new_name'].get_text()}"} + self._screen._send_action( + widget, + "server.files.move", + params + ) + self.back() + + def show_fullscreen_thumbnail(self, widget, filename): + pixbuf = self.get_file_image(filename, self._screen.width * .9, self._screen.height * .75) + if pixbuf is None: + return + image = Gtk.Image.new_from_pixbuf(pixbuf) + image.set_vexpand(True) + self._gtk.Dialog(filename, None, image, self.close_fullscreen_thumbnail) + + def close_fullscreen_thumbnail(self, dialog, response_id): + self._gtk.remove_dialog(dialog) \ No newline at end of file From 81b984216662a45636d330625df1e25ee9cec623 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 14:45:02 +0300 Subject: [PATCH 118/127] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=20base=5Fpanel.py:=20-=20=D0=BE=D1=82=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BD=D0=BE?= =?UTF-8?q?=D0=BF=D0=BA=D0=B8=20=D0=BF=D0=B8=D1=82=D0=B0=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=20=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/base_panel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panels/base_panel.py b/panels/base_panel.py index 41acea711..f743201de 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -239,7 +239,7 @@ def add_content(self, panel): connected = self._printer and self._printer.state not in {'disconnected', 'startup', 'shutdown', 'error'} printer_select = 'printer_select' not in self._screen._cur_panels self.control['estop'].set_visible(printing) - self.control['shutdown'].set_visible(not printing) + # self.control['shutdown'].set_visible(not printing) self.show_shortcut(connected and printer_select) self.show_heaters(connected and printer_select) self.show_printer_select(len(self._config.get_printers()) > 1) From 7224e121108da3c926e06d423a5a80763d0de34e Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 14:45:58 +0300 Subject: [PATCH 119/127] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=20base=5Fpanel.py:=20-=20=D0=BE=D1=82=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BD=D0=BE?= =?UTF-8?q?=D0=BF=D0=BA=D0=B8=20=D0=BF=D0=B8=D1=82=D0=B0=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=20=D0=BF=D0=B5=D1=87=D0=B0=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/base_panel.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/panels/base_panel.py b/panels/base_panel.py index f743201de..b5b324440 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -47,7 +47,7 @@ def __init__(self, screen, title=None): } self.control['shutdown'] = self._gtk.Button('shutdown', scale=self.abscale) self.control['shutdown'].connect("clicked", self.menu_item_clicked, self.shutdown) - self.control['shutdown'].set_no_show_all(True) + # self.control['shutdown'].set_no_show_all(True) self.control['printer_select'] = self._gtk.Button('shuffle', scale=self.abscale) self.control['printer_select'].connect("clicked", self._screen.show_printer_select) self.control['printer_select'].set_no_show_all(True) @@ -239,7 +239,7 @@ def add_content(self, panel): connected = self._printer and self._printer.state not in {'disconnected', 'startup', 'shutdown', 'error'} printer_select = 'printer_select' not in self._screen._cur_panels self.control['estop'].set_visible(printing) - # self.control['shutdown'].set_visible(not printing) + self.control['shutdown'].set_visible(printing) self.show_shortcut(connected and printer_select) self.show_heaters(connected and printer_select) self.show_printer_select(len(self._config.get_printers()) > 1) From 39f9b4874a2428c1ac14356046091d09fba11f82 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 15:20:05 +0300 Subject: [PATCH 120/127] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=20extrude.py:=20-=20=D0=BF=D0=BE=D0=B4=D1=82=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B6=D0=B4=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B5=20?= =?UTF-8?q?=D0=B8=20=D0=B2=D1=8B=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B5=20?= =?UTF-8?q?=D1=84=D0=B8=D0=BB=D0=B0=D0=BC=D0=B5=D0=BD=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/extrude.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/panels/extrude.py b/panels/extrude.py index c52fa8c03..62febd784 100644 --- a/panels/extrude.py +++ b/panels/extrude.py @@ -296,13 +296,13 @@ def load_unload(self, widget, direction): if not self.unload_filament: self._screen.show_popup_message("Macro UNLOAD_FILAMENT not found") else: - self._screen._send_action(widget, "printer.gcode.script", + self._screen._confirm_send_action(widget, _("Are you sure want to unload the current filament spool?"), "printer.gcode.script", {"script": f"UNLOAD_FILAMENT SPEED={self.speed * 60}"}) if direction == "+": if not self.load_filament: self._screen.show_popup_message("Macro LOAD_FILAMENT not found") else: - self._screen._send_action(widget, "printer.gcode.script", + sself._screen._confirm_send_action(widget, _("Are you sure want to load a NEW reel of filament?"), "printer.gcode.script", {"script": f"LOAD_FILAMENT SPEED={self.speed * 60}"}) def enable_disable_fs(self, switch, gparams, name, x): From 2912185c14fd4d106b5f0c2a2cd3ceeb374357b0 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 15:22:21 +0300 Subject: [PATCH 121/127] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=20extrude.py:=20-=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B5=D1=81=D0=B5=D1=82?= =?UTF-8?q?=D0=BE=D0=B2=20=D1=81=D0=BA=D0=BE=D1=80=D0=BE=D1=81=D1=82=D0=B8?= =?UTF-8?q?=20=D0=B8=20=D1=80=D0=B0=D1=81=D1=81=D1=82=D0=BE=D1=8F=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/extrude.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/panels/extrude.py b/panels/extrude.py index 62febd784..f4fd33ddf 100644 --- a/panels/extrude.py +++ b/panels/extrude.py @@ -21,8 +21,8 @@ def __init__(self, screen, title): self.load_filament = any("LOAD_FILAMENT" in macro.upper() for macro in macros) self.unload_filament = any("UNLOAD_FILAMENT" in macro.upper() for macro in macros) - self.speeds = ['1', '2', '5', '25'] - self.distances = ['5', '10', '15', '25'] + self.speeds = ['2', '6', '9', '25'] + self.distances = ['5', '15', '30', '50'] if self.ks_printer_cfg is not None: dis = self.ks_printer_cfg.get("extrude_distances", '') if re.match(r'^[0-9,\s]+$', dis): From 3d1af41e0566b4769668783fff4ea7de46b5b428 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 15:23:44 +0300 Subject: [PATCH 122/127] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=20base=5Fpanel.py:=20-=20=D0=BE=D1=82=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D0=BC=D0=B8=D1=81=D1=82=D0=BE=D1=80=D0=BE=D0=B2=20temperature?= =?UTF-8?q?=5Fsensor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/base_panel.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/panels/base_panel.py b/panels/base_panel.py index b5b324440..87a196951 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -193,6 +193,9 @@ def show_heaters(self, show=True): elif device.startswith("heater"): self.control['temp_box'].add(self.labels[f"{device}_box"]) n += 1 + elif device.startswith("temperature_sensor"): + self.control['temp_box'].add(self.labels[f"{device}_box"]) + n += 1 for device in devices: # Users can fill the bar if they want if n >= nlimit + 1: From 3ec95f66159ab1c4d6d6b207e15965bcba1e2d4a Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 15:25:24 +0300 Subject: [PATCH 123/127] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=20base=5Fpanel.py:=20-=20=D0=BE=D1=82=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D0=BC=D0=B8=D1=81=D1=82=D0=BE=D1=80=D0=BE=D0=B2=20temperature?= =?UTF-8?q?=5Fsensor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/base_panel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panels/base_panel.py b/panels/base_panel.py index 87a196951..2e67034c2 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -193,7 +193,7 @@ def show_heaters(self, show=True): elif device.startswith("heater"): self.control['temp_box'].add(self.labels[f"{device}_box"]) n += 1 - elif device.startswith("temperature_sensor"): + elif device.startswith("temperature"): self.control['temp_box'].add(self.labels[f"{device}_box"]) n += 1 for device in devices: From 9191ff6072684da5a8bbc92b14f2c7b6e18fa48d Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 15:26:56 +0300 Subject: [PATCH 124/127] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=20base=5Fpanel.py:=20-=20=D0=BE=D1=82=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D0=BC=D0=B8=D1=81=D1=82=D0=BE=D1=80=D0=BE=D0=B2=20temperature?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/base_panel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panels/base_panel.py b/panels/base_panel.py index 2e67034c2..523e6140b 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -195,7 +195,7 @@ def show_heaters(self, show=True): n += 1 elif device.startswith("temperature"): self.control['temp_box'].add(self.labels[f"{device}_box"]) - n += 1 + # n += 1 for device in devices: # Users can fill the bar if they want if n >= nlimit + 1: From a06dde9fd81b5b3f52788215567a445f0035330b Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 15:28:14 +0300 Subject: [PATCH 125/127] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=20base=5Fpanel.py:=20-=20=D0=BE=D1=82=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D0=BC=D0=B8=D1=81=D1=82=D0=BE=D1=80=D0=BE=D0=B2=20temperature?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/base_panel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/panels/base_panel.py b/panels/base_panel.py index 523e6140b..2e67034c2 100644 --- a/panels/base_panel.py +++ b/panels/base_panel.py @@ -195,7 +195,7 @@ def show_heaters(self, show=True): n += 1 elif device.startswith("temperature"): self.control['temp_box'].add(self.labels[f"{device}_box"]) - # n += 1 + n += 1 for device in devices: # Users can fill the bar if they want if n >= nlimit + 1: From 3c07064c2a9a58ea5a23bede49acb5c92b41dee7 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 15:31:37 +0300 Subject: [PATCH 126/127] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=20extrude.py:=20-=20=D0=BF=D0=BE=D0=B4=D1=82=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B6=D0=B4=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B5=20?= =?UTF-8?q?=D1=84=D0=B8=D0=BB=D0=B0=D0=BC=D0=B5=D0=BD=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- panels/extrude.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/panels/extrude.py b/panels/extrude.py index f4fd33ddf..41d3ba2a7 100644 --- a/panels/extrude.py +++ b/panels/extrude.py @@ -37,7 +37,7 @@ def __init__(self, screen, title): self.distance = int(self.distances[1]) self.speed = int(self.speeds[1]) self.buttons = { - 'extrude': self._gtk.Button("extrude", _("Extrude"), "color4"), + 'extrude': self._gtk.Button("extrude", _("Unretract"), "color4"), 'load': self._gtk.Button("arrow-down", _("Load"), "color3"), 'unload': self._gtk.Button("arrow-up", _("Unload"), "color2"), 'retract': self._gtk.Button("retract", _("Retract"), "color1"), @@ -297,13 +297,13 @@ def load_unload(self, widget, direction): self._screen.show_popup_message("Macro UNLOAD_FILAMENT not found") else: self._screen._confirm_send_action(widget, _("Are you sure want to unload the current filament spool?"), "printer.gcode.script", - {"script": f"UNLOAD_FILAMENT SPEED={self.speed * 60}"}) + {"script": f"UNLOAD_FILAMENT"}) if direction == "+": if not self.load_filament: self._screen.show_popup_message("Macro LOAD_FILAMENT not found") else: - sself._screen._confirm_send_action(widget, _("Are you sure want to load a NEW reel of filament?"), "printer.gcode.script", - {"script": f"LOAD_FILAMENT SPEED={self.speed * 60}"}) + self._screen._confirm_send_action(widget, _("Are you sure want to load a NEW reel of filament?"), "printer.gcode.script", + {"script": f"LOAD_FILAMENT"}) def enable_disable_fs(self, switch, gparams, name, x): if switch.get_active(): From 29db78d4dc76cc39d1528f64a6a68b4d76dd8db3 Mon Sep 17 00:00:00 2001 From: Vlad <427departament@gmail.com> Date: Thu, 6 Feb 2025 16:16:18 +0300 Subject: [PATCH 127/127] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=20screen.py:=20-=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80?= =?UTF-8?q?=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D0=B8=D1=81=D1=82?= =?UTF-8?q?=D0=B5=D0=BC=D0=BD=D1=8B=D1=85=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B9,=20=D0=BD=D0=B0=D1=87=D0=B8=D0=BD?= =?UTF-8?q?=D0=B0=D1=8E=D1=89=D0=B8=D1=85=D1=81=D1=8F=20=D0=BD=D0=B0=20[+]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../locales/ru/LC_MESSAGES/KlipperScreen.mo | Bin 27427 -> 27551 bytes .../locales/ru/LC_MESSAGES/KlipperScreen.po | 5 ++++- screen.py | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/ru/LC_MESSAGES/KlipperScreen.mo index 3706da8cf3fc991d12521fa29688bd108503245b..beead5369051afdacdf5a77537311a768c0daebf 100644 GIT binary patch delta 6233 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 delta 6126 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\n" "Language-Team: Russian \n" "Language: ru\n" @@ -1055,6 +1055,9 @@ msgstr "Калибровки" msgid "Bed calibrate" msgstr "Калибр. карты" +msgid "Temperature too low to extrude" +msgstr "Слишком низкая температура для экструзии" + msgid "Autocalibration of PID hotend" msgstr "Калибр. PID хотенда" diff --git a/screen.py b/screen.py index 2a9959572..afb65de0f 100755 --- a/screen.py +++ b/screen.py @@ -848,6 +848,8 @@ def _websocket_callback(self, action, data): return elif data.startswith("echo: "): self.show_popup_message(data[6:], 1, from_ws=True) + elif data.startswith("[+] "): + self.show_popup_message(data[:], 1, from_ws=True) elif "!! Extrude below minimum temp" in data: if self._cur_panels[-1] != "temperature": self.show_panel("temperature", extra=self.printer.get_stat("toolhead", "extruder"))

&(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 GQJChqnMNtPEXw ze{{a&AQ~1h60LYVdcqxOA+ymdGasFBDfYzL*guLM_dYt#C+GxUq2qmvIhg2{zLM?G z~X?7Nhs9FIvb@bmEcdl^Tn_j?>T;&p{_#h#p^qzNV|N zIqpQyKY}jsEllRoI2Aw0;l?^Z3v@+ok&i+d@?3?n=)*Q2{UZ7;`p~ULSGF#?3Hj@r zx*h%TAaP>1$;9s(xBI;RH`92DTht@p&ziFVLDo4v|NQ+w){S`NR&Jch~JZYB2;x1W-8i7(v&GK+L2za~$Si^=1} zZ7Z3UYK3qY7Li;sB<}lVG&TRnvGWUTM=FUg%I)Mil0^oPE~J+DHQ|;)CZ$^ZYd_jM zdTsRg(S>*md4=$}r?zYSUHwJ#MDph}+LJQ!W8$`)w6ww2fLxVorQe*)*j|d+|*~fw?rMlE=vP#O)69A-R(DBGZZ6Wog0< zcoP{&o*+I-W60_4L~M-1XULq`mk&reDIk5TA4nv!-l8>w{Iz;TBGLR=TDOs*#I2@o zN8-zj%qbHm6;{@5X!SvZh805#C*OQq-Qxv?O*1QQx^2qTy7iqaGBVkH_xQTZvfDHN E4`^NDh5!Hn diff --git a/ks_includes/locales/sl/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/sl/LC_MESSAGES/KlipperScreen.po index 71f2293c3..4759044a5 100644 --- a/ks_includes/locales/sl/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/sl/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-04-13 16:48+0000\n" "Last-Translator: Dominik \n" "Language-Team: Slovenian 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 YOWGGy)~)fydS&g>BZAAiXLb(xA8{J?B>(^b delta 5376 zcmYk<30PHS9>?+54FnBj$u$*R5impp_jk{q=b7{LPp7XBf+-rpy(?)vdA}hb) zIBt^rNNKQhJt{bNBwV%5)wtKW`WS&Bn1t1_EjGn27=@#-3g+THI30sP89RIKB-Qy(>uX2{~YMD%n+CkmQ*4^+p`+4(T@Wz-f;M(yF-s1DvmJtpf>?G&OW zas)NdQ>YG$Py;@X8t5fde`R&pe|=DaVQS`8Q8&~$Tq!Oh5ax*f<<>rSF(Qi>XA z1s(u3Tn#mmC{#O5%$8;I5j>G<_!-nn z4M7cH1ZpB#sEJIl&poT3X7#gC6Pk~jfVY$a+u=S$HLwrW;2~5;CsBJ|jGEbb)Qvx* zW_;JqgLy!7U$of()m|KGKuM_fQcx3o$glU@({@2$jO2p>c0LBxK{jfplTZVhidvEB zs4ZE7P4FY+KX;lx8fY2v)!>3yMm?No{8fiw*BC_F_$0~m-}+To}h#-cjP zLpAuZeZC*n(3f^zWL`pTL79Di*Xn~~{OhAp6S~jN8>6R(A%TKANJY)0D{AEZF)%RH z%!i|1!aUs2Qzf}>F@mW@ox&9nL~7{vK@492~vtvrNP z@f_+c`5uGl-~CEKBfX0W7}~<`AQjb68tR*|Giqji?0hf=z9&$>A$j)sQmn-JYE;MT zP#x|@^>YG4@GN?2poD@fMHazTjQ2Z^N9}1cs)5d^XP_6Vfsv?=#-jFoJZiu>7>d(S zTk<+q#bu~=R-#sBTRiKp4t7zYnVmq*q!@MMFQ^79u`F8hP}BfwpssI@8bBLV2fs&M z*AaDJ7d!uh+0*Qgn!vyW)?cs32&)){>R=r5O1n9zfo#NTxC1rvgQ%rFZuJ+;pUhjB z#^+TN{bwm1HL>2PXJ|C)3vRAQK|jAMkzZ1`8@ppMY6kHw{iRJtJ@u)m`gGI`x?6o8 za~Ns`vavc&KrQ(U)UV@W)cspg_j`pDv~&khOL-i1!%4gcFQR6A9YgV^od@yGsy+vje; zpgX8<(2yj5iyEMwsd!YoY4{+fqpqKVTKd^oMeqLy6g09ms4tYwsF|F?Hdthzhqv-y z!yobl{mfsH|}KrU)!=b_qP*qZg%)4!Sujd(Ar z!=tDMzOwVPsDWKTHTWZ{xh;|o8OT9jU3ju%sdKB zNcpkR3g6=ql24WreFx`}Ps#J7Khd{^jxWe#L{DrHnMDSYsYJ(d@>8J1zhrSYnL;}1 zTjoy`9wx(xHf9@{Pnr@PB|a_&wb42jl51oRd5w%A|0K)EFJvTnoJ=Hx$!Vga5qXq+ zP5w;Ozbhpb$w9J*={k=qPV9rL!cG{Dqt#eaJ~tK+ci#M8{ko zmurf8B-76OnLTl~m3!j`GL5`QV#yn%m~hl}ef@%)fRjnOov+L6`uQqVMhqPmlU\n" "Language-Team: Swedish 8-moiSUyJO_CecMP@ zxvVU6+SYKxR_2DwKeWtd_J=m5HfK6qq@xw7t(ncr+N|fx@5eD7pU>w$Ki=>6=X3bq zZcp#Kp2KBn&Va|5aY18d8Dl;S8FL?=#mP8~KD>@uIJMN6RPmcROx?5 zW%7?5PpvSffc|7uMM9_p!#EB%qR#6;CFJzbm_cJZQe|@hr{J)ia06@U-$7+u$-O9( zb*K$CU=eP{WPAtnaWCr1j#fpoHFK`VRjl5TmF7 z-@>W*9%|ko>Y(Gcf5v(NmB3Zh{4q?ze^HgYi#a%n=o~#N9}SgeIc8xqDx(DI;BBaq z^`YkNLA~xns13ihj#zJC9piUU2~;g{1Kxny^gB>*sc#AO*Vk=;0UdA#=i)FbLQjn` zjhKh`UN0)J4pd-q)YtJvRHm=n&-bG$@R9W}s=`NY|0L?FPS;TXd>R)SP$_TYOibd* zYe6CEAV2Eh3OinldZZ1g3bdf+wcF3*s7JXCbyd5p@1x$rLDYVO4h`M)QJjt^PzPT? zRb&LU(Ql}Q$#w3+RMhws)cU!o3i(kL38AjC-u7Ei>pQGlQ2RUGG!%Is`tVIG#!pd| z`4KgqRBy}!I3IQJGE`>kQGYKYs5|XJ9lRS$a1d45?@?EB4K@EJlBi>nmb!Q0McrXG zYGMF+Kc*ZNX$+NVFDk=V?f72Qh6io`b5v=EQ2Tv{s^~R*5O1OO^Dfgq4&O@}detSU zNb8Yrh*^uu67`4WGV1Dnvi;=c?)(hY=W|eREr^av zwUUModKA?UTiY?0{&T3i+=$;QsLmoPYzUk{?0^a0(~l54Jys3Vd9nJAXQ=68We^e5f~7 zfvP|p7og+N&|?`yWq1M=@kP|aG1S-YPgLpCA8`-JM;%y%Ds3ey^C!`RZMGjlKm8c` zuphPm*O-LGmuV!^7(tbC)OroI(M{BXTSpo*zsY$!5S-Us8Z0gIhl2i4s35qoDj1p{ z$>BSSUk|#6^m?%ZVhbe YiYFq^1bQN^tcV1SkL2Veqg}5Clo_QYm zF$4UH#Bo$be?hh~QDhf|>rtNBJ4qB@Dax130#09s6elyO8+}5 zlYi`Z_T1H3F|1TQoo`f6Q1~gy<>`LD8m|5X3wDRa5t&~ub?76g37cP zb?|ZPml#L?JnGSoWoD&x3pw^9kHb5c*6UGGAbsu2}Pi*+yR;1^L> z^9E{OHzr~asv^Uvd0(RfAI0@}6;+w}Iqut8h}y@Gv7B$#(a>F%qcYu!I^bzc#YR+s zZ{Z{O4r<;Y>Y!oUKWn{!O5hr5{sd0Le^HgYi%A$wbdDZXDh-t;fC;!2l~Eh&;C-l) zb)x1SMZN9;)P~<$uUKzj0poX239QL=1Kx>=^czrbsWX@Q>+9CXfDSl|OK}Vp;XMpt zLY{rSsK6RffwiK(jxV4xJ!n7gMOENK>v2?thiv~8>Z;DT4^N^FxPYq2 z71Tz*p%$vHS{R8MpN(3-1ohf|sEYVeSD9=3+feHptj(zXo!vAPc_*gfo9M&OP?h-+ zH9m#$xHRA%oR7+^2KDzMj0>>?b?_0)z(G`HzeiokBx?RmBvHpq(a>E)ZE){!9%^Db z@_x)pRHQAaOdV8)uiEi0)Q0`G{{^Z-Bd9m=9jc;}I3I7J_KVu6eH;d9=vAkoBF#m< zA*K|S$!n+p`%r;>f|~a^Dv&d%11{Omuc6+=1Zw?l)V!ENcU}^z;;9(J`DPgn-DNiF zQB~;!tV3niiVE-mDu8a({9e?-L#TsJq5iO3MqS-cwr_&&{20{di&1Ya109uWBMlw2 z3DvK)*5d;D&!O(}5Gs>l+dqeq^#8WrMP+7++zNS60mh^D@uCvT#hDl?qW)@BF`$jM zp(;>|DtQ|!AP04KucQ7h^dVI>r*I~kV)t=Ip{`~TYF!5EuCq{?2QeM1tow_p|1t*p z8Q@)*G2|bVnO|Z|1wM&U*oP|l04jjf7>z&J{sb!U`>6SILvAG!QHi9Y-c%;40m+KUo2Ui1hC;EUN%33uwm;j{(dbRv)ZEn8R^MJ-*Ir-W;yW6@ zB0Yb5FtFKQUg<9kcuOj?%R`UvsH_Nj%EBFc{9D??Egj9_J+1B8-lCeaGH*qoJm_5? WEDwar3Ic_Nn}gNWL+`C\n" "Language-Team: Turkish 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 Wvpp!FaCdcyH$OeGdRy1(&|d+D;(7}J delta 6159 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 SZ%<{uw^4_f%DfvZgZ>7F?wFGR diff --git a/ks_includes/locales/vi/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/vi/LC_MESSAGES/KlipperScreen.po index 84bde2b6d..c1cafd6c7 100644 --- a/ks_includes/locales/vi/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/vi/LC_MESSAGES/KlipperScreen.po @@ -2,7 +2,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-12 07:09+0000\n" "Last-Translator: Hiep Nguyen \n" "Language-Team: Vietnamese }Ho3cQ{+MeymrJvmKNiangcpue32lmG$x)j<2HL^uCHHUuw%y z`%FkX(TFNA57p@!yB^iRR=dmjeW;B-L7l+oj=w`Sb_)4a!*%Bi$3*joq2`amzL>6I zpbchX5za#uei?Id0~X^>%*Ugsg=bOguAnx&gIbp}HhQxHTW)9A6qYb=1JX!39AKaV zU!e+|LlwT{_=f!(buwWb#|hasAN58>sKzQ#M>`o+FKHK|>Mp}PT#bF%KfKOBh2KLh z=y2TW_z-HrQO9TO1sp*BGHU(5w&(b0qkgE5;2~7q>CQicS;Q}34*Q2ip0FBK=oQCX za0Kyo$6un}pc}LCBQTSx4Sv4X`OT;T+fWS%=4f`1?e;zgO7kd+R znKNpl=XrLZeOR)87{Ndb%WSnLOmjTTKJR?WaU1G#y@YCf6Y5QOqyGEehx$kkq3WNq zKcl{WzhhdRXHAMG+>eT5wg?9jm!LMNLlv5fI)P@?{MYObKYs^xa(hv?z03JSsIU1q z*bC22;`}wZNJ5=oLtU=hsKVK`kvXW13+zzj0*8d3w>ZDju0z$^irVmPRJ{(=iFD#% zJYLKB^CK00Bca<~@_6*74LFE+5vtHeynE^Vd=ILjF57KS+ViLluQ|Sn!-z8`NBI&| z{dk&zHh3CiI0tpqD^Nd`n@~ScZ=rq%K1RLKF+V?p+UPR&!0Yx;=Wk;P`TuYT4zG*m z*JCDeNdtp>7&Q99T-$^yxX3Q;oSOS>tk1Mmb4$zo*4a(1^XD(!Ru>;pmxw3IOUvS= ziSdPH<0{J%BjfzZek$3vytJV;xwI{nT)wQevaqo^l`4F0VY0cfY9+%}j4CQ7E?AOm XPK|0>wq)B!@r{|a(>trmX6OA6{s}Di delta 2718 zcmXZdeN2{B7{~DgY6@xyf>|hFk%|WKqK2p;FAsu(B-pInEOo3hL`8CQHlNz^g(=gi zThmqMre@{Lm)1&~x&AP1E3GyxOE+WLbgeAibTeJwpZD*t&$+I1?(1Cl;XF70ZcNzJ zm2hxea{OFE2)znJ7#c$Or6_~}cmq>0p*RGFVK8Q34DZ9asC5e*FTph86^=XYW*kZW zEqff3h=0cs_;+!Lhb#uECE=chw$ZlPE>r{iQ4M^BYTz`cVK?UE73Uuq7tQCQ))%2R zE_Gb#xNclLTG;Hw3z*5mMP9fTwNaPncR1dSI|##N}o?_xUc!I5|rhu|gDgSSx6^?M@PFaz~m0qV`h+gWz8?ZiCh_aKeL!x;wZ z_%~F6+o-~crBR$>hoDYoIQGX;wgmM?<*3G*Pz@|V)mv@Xpz3bK4BU<>>>oa6pu%6G z9ysmztmE^j2QE3jY474-@_i;o&p&7%L2Zb~N9JN6}xV=DWHbzZO?)yR8} zKg2P_haCTkD%^v~cnx(Dw;lH_i}Gox4Tq!Zre;TLTOs=ym| zz4Mz;NBlObzB)!?I(`B-5wDxP4gPz^t2=h%6uhFk2bsOQ$$Et5I_he+&n;wY-)uTdLaMjhc* z)CM=~ZB*gJDN(^R)Vgfcx;*C#Q71IT)}rb*qt?xddoT}&l4wB{T5Z>(eui66oxhKI z@Dt~cIX-L8p&Gkr|FU;IfB%zF{S4H)c(wPAF57Lc{HDmTK^bo%@^B=cB*9mFpYs8oN4EJ!Ap*p*w>uzbi5gLx!yrFz7O@L$5H>jPoe%K z=TY^q+fW(({03rNo#isng0ZN$)RyBg;u_Qj3sLJ~Ua8{z`ACKS)zNLQLA~iR%))i3LVNMvrStp=R72gi$6m8{P#Y%4qIIb_iZ~0E zuR+ysh%?Xzt(b``Pz`KBeJb~%K2V>cz60N*-srODZ=wqJsfmtyfE|R&r(+&wVlKv< zUxbOodCM5|X3*h@mG*V)MSh*#aHKB%yUeY73Ug9M&uD#l>C%?==7sGoEp2&Qa|_3m zKO3uP%5P}Qudc|cZ7gf38~a@2%vf^${N)|_v)kvlEpMIQv825$r{?MU`ka{+4Y8cb ev4)De`l%Jw)lISH=B?WbJA2o%?nrh~bH@K>>?|Ar diff --git a/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.po b/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.po index 11ca091b6..c02a1e614 100644 --- a/ks_includes/locales/zh_CN/LC_MESSAGES/KlipperScreen.po +++ b/ks_includes/locales/zh_CN/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-10-29 18:12+0000\n" "Last-Translator: Will Zhai \n" "Language-Team: Chinese (Simplified Han script) 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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 6c3d09753..dab471379 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: 2024-10-09 18:08-0300\n" +"POT-Creation-Date: 2024-11-26 12:31-0300\n" "PO-Revision-Date: 2024-11-21 13:02+0000\n" "Last-Translator: Kayz C \n" "Language-Team: Chinese (Traditional Han script) Date: Fri, 6 Dec 2024 18:13:38 -0300 Subject: [PATCH 075/127] Revert "feat: Menu active status (#1482)" This reverts commit 4172d59dbe547334e3b203ad3445b039b7007915. due to a bug that needs to be investigated closes #1519 --- 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, 3 insertions(+), 69 deletions(-) diff --git a/config/move_menu.conf b/config/move_menu.conf index e8521d76d..1ba8a9927 100644 --- a/config/move_menu.conf +++ b/config/move_menu.conf @@ -7,35 +7,30 @@ 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') }} @@ -43,7 +38,6 @@ icon: home-z method: printer.gcode.script params: {"script":"QUAD_GANTRY_LEVEL"} enable: {{ 'QUAD_GANTRY_LEVEL' in printer.available_commands }} -active: {{ printer.quad_gantry_level.applied }} [menu move homing Z-Tilt] name: {{ gettext('Z Tilt') }} @@ -51,4 +45,3 @@ icon: z-tilt method: printer.gcode.script params: {"script":"Z_TILT_ADJUST"} enable: {{ 'Z_TILT_ADJUST' in printer.available_commands }} -active: {{ printer.z_tilt.applied }} \ No newline at end of file diff --git a/ks_includes/config.py b/ks_includes/config.py index b7f9068ce..18ff70900 100644 --- a/ks_includes/config.py +++ b/ks_includes/config.py @@ -190,7 +190,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', 'active') + strs = ('name', 'icon', 'panel', 'method', 'params', 'enable', 'confirm', 'style') elif section.startswith('graph')\ or section.startswith('displayed_macros')\ or section.startswith('spoolman'): @@ -617,8 +617,7 @@ 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), - "active": cfg.get("active", None) + "style": cfg.get("style", None) } return {name[(len(menu) + 6):]: item} diff --git a/ks_includes/printer.py b/ks_includes/printer.py index 9265ca13b..0eb930cd4 100644 --- a/ks_includes/printer.py +++ b/ks_includes/printer.py @@ -258,9 +258,6 @@ 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"), "available_commands": self.available_commands, } } diff --git a/panels/menu.py b/panels/menu.py index 574047aaf..97761849e 100644 --- a/panels/menu.py +++ b/panels/menu.py @@ -84,31 +84,15 @@ 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._printer.get_printer_status_data()) == 'True' + return j2_temp.render(self.j2_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 ea0a1fcf4..c03d2ec78 100644 --- a/styles/base.css +++ b/styles/base.css @@ -80,13 +80,6 @@ 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 ac93551ee..15b7b5550 100644 --- a/styles/colorized/style.css +++ b/styles/colorized/style.css @@ -110,12 +110,6 @@ 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 258105a93..581786905 100644 --- a/styles/material-dark/style.css +++ b/styles/material-dark/style.css @@ -94,12 +94,6 @@ 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 46d3274a5..a59d55623 100644 --- a/styles/material-darker/style.css +++ b/styles/material-darker/style.css @@ -92,12 +92,6 @@ 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 c069a64a3..daad1a7ea 100644 --- a/styles/material-light/style.css +++ b/styles/material-light/style.css @@ -149,15 +149,6 @@ 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 9ef5a26f7..73867f6ed 100644 --- a/styles/z-bolt/style.css +++ b/styles/z-bolt/style.css @@ -101,11 +101,6 @@ menu { border-color: @lines; } -button.menu_active { - border-width: 0; - background-color: @active; -} - menuitem { background-color: @bg; border-color: @lines; From 6839301f7c2630d89162ce1f42eea1a21e5fc097 Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Fri, 6 Dec 2024 22:24:58 +0100 Subject: [PATCH 076/127] chore(locales): Translations update from Hosted Weblate (#1515) * Translated using Weblate (Spanish) Currently translated at 100.0% (325 of 325 strings) Co-authored-by: gallegonovato Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/es/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Czech) Currently translated at 100.0% (325 of 325 strings) Co-authored-by: Michal Bitala Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/cs/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (325 of 325 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (325 of 325 strings) Co-authored-by: Sun Zheng <123456789sunzheng@gmail.com> Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/zh_Hant/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Turkish) Currently translated at 100.0% (325 of 325 strings) Co-authored-by: Selim Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/tr/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Hungarian) Currently translated at 100.0% (325 of 325 strings) Co-authored-by: Zs.Antal Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/hu/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Italian) Currently translated at 100.0% (325 of 325 strings) Co-authored-by: Giadej Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/it/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Spanish) Currently translated at 100.0% (325 of 325 strings) Co-authored-by: Radiotbo Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/es/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Russian) Currently translated at 97.5% (317 of 325 strings) Co-authored-by: Eugen Fleischhauer Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/ru/ Translation: KlipperScreen/KlipperScreen * Translated using Weblate (Lithuanian) Currently translated at 100.0% (325 of 325 strings) Co-authored-by: vjurka Translate-URL: https://hosted.weblate.org/projects/klipperscreen/klipperscreen/lt/ Translation: KlipperScreen/KlipperScreen --------- Co-authored-by: gallegonovato Co-authored-by: Michal Bitala Co-authored-by: Sun Zheng <123456789sunzheng@gmail.com> Co-authored-by: Selim Co-authored-by: Zs.Antal Co-authored-by: Giadej Co-authored-by: Radiotbo Co-authored-by: Eugen Fleischhauer Co-authored-by: vjurka --- .../locales/cs/LC_MESSAGES/KlipperScreen.mo | Bin 18745 -> 18903 bytes .../locales/cs/LC_MESSAGES/KlipperScreen.po | 12 ++++++------ .../locales/es/LC_MESSAGES/KlipperScreen.mo | Bin 18990 -> 19136 bytes .../locales/es/LC_MESSAGES/KlipperScreen.po | 12 ++++++------ .../locales/hu/LC_MESSAGES/KlipperScreen.mo | Bin 19498 -> 19638 bytes .../locales/hu/LC_MESSAGES/KlipperScreen.po | 10 +++++----- .../locales/it/LC_MESSAGES/KlipperScreen.mo | Bin 18872 -> 19009 bytes .../locales/it/LC_MESSAGES/KlipperScreen.po | 8 ++++---- .../locales/lt/LC_MESSAGES/KlipperScreen.mo | Bin 19226 -> 19389 bytes .../locales/lt/LC_MESSAGES/KlipperScreen.po | 12 ++++++------ .../locales/ru/LC_MESSAGES/KlipperScreen.mo | Bin 23393 -> 23608 bytes .../locales/ru/LC_MESSAGES/KlipperScreen.po | 10 +++++----- ks_includes/locales/stats/cs.json | 5 +++++ ks_includes/locales/stats/es.json | 5 +++++ ks_includes/locales/stats/hu.json | 5 +++++ ks_includes/locales/stats/it.json | 5 +++++ ks_includes/locales/stats/lt.json | 5 +++++ ks_includes/locales/stats/ru.json | 5 +++++ ks_includes/locales/stats/tr.json | 5 +++++ ks_includes/locales/stats/zh_CN.json | 5 +++++ ks_includes/locales/stats/zh_TW.json | 5 +++++ .../locales/tr/LC_MESSAGES/KlipperScreen.mo | Bin 19203 -> 19349 bytes .../locales/tr/LC_MESSAGES/KlipperScreen.po | 10 +++++----- .../zh_CN/LC_MESSAGES/KlipperScreen.mo | Bin 18034 -> 18194 bytes .../zh_CN/LC_MESSAGES/KlipperScreen.po | 12 ++++++------ .../zh_TW/LC_MESSAGES/KlipperScreen.mo | Bin 17936 -> 18104 bytes .../zh_TW/LC_MESSAGES/KlipperScreen.po | 10 +++++----- 27 files changed, 93 insertions(+), 48 deletions(-) create mode 100644 ks_includes/locales/stats/cs.json create mode 100644 ks_includes/locales/stats/es.json create mode 100644 ks_includes/locales/stats/hu.json create mode 100644 ks_includes/locales/stats/it.json create mode 100644 ks_includes/locales/stats/lt.json create mode 100644 ks_includes/locales/stats/ru.json create mode 100644 ks_includes/locales/stats/tr.json create mode 100644 ks_includes/locales/stats/zh_CN.json create mode 100644 ks_includes/locales/stats/zh_TW.json diff --git a/ks_includes/locales/cs/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/cs/LC_MESSAGES/KlipperScreen.mo index ab9dc0d0d99aa8ae37a7de2387bea2d4e45a59c9..f85fdfeff0df660a000f367b52359cdefe7e7e9c 100644 GIT binary patch delta 7232 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 delta 7098 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\n" +"PO-Revision-Date: 2024-11-27 21:00+0000\n" +"Last-Translator: Michal Bitala \n" "Language-Team: Czech \n" "Language: cs\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" -"X-Generator: Weblate 5.8-dev\n" +"X-Generator: Weblate 5.9-dev\n" #, python-format msgid "%s will be updated to version" @@ -502,7 +502,7 @@ msgid "Loading..." msgstr "Načítání...." msgid "Lock" -msgstr "" +msgstr "Uzamknout" msgid "Lost Connection to Moonraker" msgstr "Ztracené spojení s Moonrakerem" @@ -915,10 +915,10 @@ msgid "Unload" msgstr "Vysuň" msgid "Unlock" -msgstr "" +msgstr "Odemknout" msgid "Unlock failed" -msgstr "" +msgstr "Odemknutí selhalo" msgid "Unretract Extra Length" msgstr "Vysuň extra délku" diff --git a/ks_includes/locales/es/LC_MESSAGES/KlipperScreen.mo b/ks_includes/locales/es/LC_MESSAGES/KlipperScreen.mo index b8e37e7004280766e6b8af1f60aa40e687c2a27b..5a66de41e50360b9462890ed93f8701fdb2699e5 100644 GIT binary patch delta 7253 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