diff --git a/cura/CrashHandler.py b/cura/CrashHandler.py index efe34bd1d8..ab7a7ebdd1 100644 --- a/cura/CrashHandler.py +++ b/cura/CrashHandler.py @@ -10,7 +10,7 @@ import os.path import uuid import json import locale -from typing import cast +from typing import cast, Any try: from sentry_sdk.hub import Hub @@ -32,6 +32,8 @@ from UM.Resources import Resources from cura import ApplicationMetadata catalog = i18nCatalog("cura") +home_dir = os.path.expanduser("~") + MYPY = False if MYPY: @@ -83,6 +85,21 @@ class CrashHandler: self.dialog = QDialog() self._createDialog() + @staticmethod + def pruneSensitiveData(obj: Any) -> Any: + if isinstance(obj, str): + return obj.replace(home_dir, "") + if isinstance(obj, list): + return [CrashHandler.pruneSensitiveData(item) for item in obj] + if isinstance(obj, dict): + return {k: CrashHandler.pruneSensitiveData(v) for k, v in obj.items()} + + return obj + + @staticmethod + def sentryBeforeSend(event, hint): + return CrashHandler.pruneSensitiveData(event) + def _createEarlyCrashDialog(self): dialog = QDialog() dialog.setMinimumWidth(500) diff --git a/cura_app.py b/cura_app.py index 6149eeeb9a..38d1149080 100755 --- a/cura_app.py +++ b/cura_app.py @@ -8,9 +8,17 @@ import faulthandler import os import sys +# Workaround for a race condition on certain systems where there +# is a race condition between Arcus and PyQt. Importing Arcus +# first seems to prevent Sip from going into a state where it +# tries to create PyQt objects on a non-main thread. +import Arcus # @UnusedImport +import Savitar # @UnusedImport + from UM.Platform import Platform from cura import ApplicationMetadata from cura.ApplicationMetadata import CuraAppName +from cura.CrashHandler import CrashHandler try: import sentry_sdk @@ -42,8 +50,9 @@ if with_sentry_sdk: sentry_env = "nightly" except IndexError: pass - + sentry_sdk.init("https://5034bf0054fb4b889f82896326e79b13@sentry.io/1821564", + before_send = CrashHandler.sentryBeforeSend, environment = sentry_env, release = "cura%s" % ApplicationMetadata.CuraVersion, default_integrations = False, @@ -166,13 +175,6 @@ if sys.stderr: elif sys.stdout: faulthandler.enable(file = sys.stdout, all_threads = True) -# Workaround for a race condition on certain systems where there -# is a race condition between Arcus and PyQt. Importing Arcus -# first seems to prevent Sip from going into a state where it -# tries to create PyQt objects on a non-main thread. -import Arcus #@UnusedImport -import Savitar #@UnusedImport - from cura.CuraApplication import CuraApplication diff --git a/plugins/SentryLogger/SentryLogger.py b/plugins/SentryLogger/SentryLogger.py index 31ab38b6e2..51e77ad589 100644 --- a/plugins/SentryLogger/SentryLogger.py +++ b/plugins/SentryLogger/SentryLogger.py @@ -3,6 +3,9 @@ from UM.Logger import LogOutput from typing import Set + +from cura.CrashHandler import CrashHandler + try: from sentry_sdk import add_breadcrumb except ImportError: @@ -10,8 +13,6 @@ except ImportError: from typing import Optional import os -home_dir = os.path.expanduser("~") - class SentryLogger(LogOutput): # Sentry (https://sentry.io) is the service that Cura uses for logging crashes. This logger ensures that the @@ -37,7 +38,7 @@ class SentryLogger(LogOutput): # \param message String containing message to be logged def log(self, log_type: str, message: str) -> None: level = self._translateLogType(log_type) - message = self._pruneSensitiveData(message) + message = CrashHandler.pruneSensitiveData(message) if level is None: if message not in self._show_once: level = self._translateLogType(log_type[0]) @@ -47,12 +48,6 @@ class SentryLogger(LogOutput): else: add_breadcrumb(level = level, message = message) - @staticmethod - def _pruneSensitiveData(message): - if home_dir in message: - message = message.replace(home_dir, "") - return message - @staticmethod def _translateLogType(log_type: str) -> Optional[str]: return SentryLogger._levels.get(log_type) diff --git a/plugins/SimulationView/SimulationPass.py b/plugins/SimulationView/SimulationPass.py index 4e4f1e49df..24bdedd368 100644 --- a/plugins/SimulationView/SimulationPass.py +++ b/plugins/SimulationView/SimulationPass.py @@ -46,10 +46,19 @@ class SimulationPass(RenderPass): self._layer_view = layerview self._compatibility_mode = layerview.getCompatibilityMode() - def _updateLayerShaderValues(self): + def render(self): + if not self._layer_shader: + if self._compatibility_mode: + shader_filename = "layers.shader" + shadow_shader_filename = "layers_shadow.shader" + else: + shader_filename = "layers3d.shader" + shadow_shader_filename = "layers3d_shadow.shader" + self._layer_shader = OpenGL.getInstance().createShaderProgram(os.path.join(PluginRegistry.getInstance().getPluginPath("SimulationView"), shader_filename)) + self._layer_shadow_shader = OpenGL.getInstance().createShaderProgram(os.path.join(PluginRegistry.getInstance().getPluginPath("SimulationView"), shadow_shader_filename)) + self._current_shader = self._layer_shader # Use extruder 0 if the extruder manager reports extruder index -1 (for single extrusion printers) - self._layer_shader.setUniformValue("u_active_extruder", - float(max(0, self._extruder_manager.activeExtruderIndex))) + self._layer_shader.setUniformValue("u_active_extruder", float(max(0, self._extruder_manager.activeExtruderIndex))) if self._layer_view: self._layer_shader.setUniformValue("u_max_feedrate", self._layer_view.getMaxFeedrate()) self._layer_shader.setUniformValue("u_min_feedrate", self._layer_view.getMinFeedrate()) @@ -62,7 +71,7 @@ class SimulationPass(RenderPass): self._layer_shader.setUniformValue("u_show_skin", self._layer_view.getShowSkin()) self._layer_shader.setUniformValue("u_show_infill", self._layer_view.getShowInfill()) else: - # defaults + #defaults self._layer_shader.setUniformValue("u_max_feedrate", 1) self._layer_shader.setUniformValue("u_min_feedrate", 0) self._layer_shader.setUniformValue("u_max_thickness", 1) @@ -74,20 +83,6 @@ class SimulationPass(RenderPass): self._layer_shader.setUniformValue("u_show_skin", 1) self._layer_shader.setUniformValue("u_show_infill", 1) - def render(self): - if not self._layer_shader: - if self._compatibility_mode: - shader_filename = "layers.shader" - shadow_shader_filename = "layers_shadow.shader" - else: - shader_filename = "layers3d.shader" - shadow_shader_filename = "layers3d_shadow.shader" - self._layer_shader = OpenGL.getInstance().createShaderProgram(os.path.join(PluginRegistry.getInstance().getPluginPath("SimulationView"), shader_filename)) - self._layer_shadow_shader = OpenGL.getInstance().createShaderProgram(os.path.join(PluginRegistry.getInstance().getPluginPath("SimulationView"), shadow_shader_filename)) - self._current_shader = self._layer_shader - - self._updateLayerShaderValues() - if not self._tool_handle_shader: self._tool_handle_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "toolhandle.shader")) @@ -102,6 +97,7 @@ class SimulationPass(RenderPass): nozzle_node = None for node in DepthFirstIterator(self._scene.getRoot()): + if isinstance(node, ToolHandle): tool_handle_batch.addItem(node.getWorldTransformation(), mesh = node.getSolidMesh()) @@ -116,24 +112,29 @@ class SimulationPass(RenderPass): # Render all layers below a certain number as line mesh instead of vertices. if self._layer_view._current_layer_num > -1 and ((not self._layer_view._only_show_top_layers) or (not self._layer_view.getCompatibilityMode())): - start = self._layer_view.start_elements_index - end = self._layer_view.end_elements_index - index = self._layer_view._current_path_num - offset = 0 - layer = layer_data.getLayer(self._layer_view._current_layer_num) - if layer is None: - continue - for polygon in layer.polygons: - # The size indicates all values in the two-dimension array, and the second dimension is - # always size 3 because we have 3D points. - if index >= polygon.data.size // 3 - offset: - index -= polygon.data.size // 3 - offset - offset = 1 # This is to avoid the first point when there is more than one polygon, since has the same value as the last point in the previous polygon - continue - # The head position is calculated and translated - head_position = Vector(polygon.data[index + offset][0], polygon.data[index + offset][1], - polygon.data[index + offset][2]) + node.getWorldPosition() - break + start = 0 + end = 0 + element_counts = layer_data.getElementCounts() + for layer in sorted(element_counts.keys()): + # In the current layer, we show just the indicated paths + if layer == self._layer_view._current_layer_num: + # We look for the position of the head, searching the point of the current path + index = self._layer_view._current_path_num + offset = 0 + for polygon in layer_data.getLayer(layer).polygons: + # The size indicates all values in the two-dimension array, and the second dimension is + # always size 3 because we have 3D points. + if index >= polygon.data.size // 3 - offset: + index -= polygon.data.size // 3 - offset + offset = 1 # This is to avoid the first point when there is more than one polygon, since has the same value as the last point in the previous polygon + continue + # The head position is calculated and translated + head_position = Vector(polygon.data[index+offset][0], polygon.data[index+offset][1], polygon.data[index+offset][2]) + node.getWorldPosition() + break + break + if self._layer_view._minimum_layer_num > layer: + start += element_counts[layer] + end += element_counts[layer] # Calculate the range of paths in the last layer current_layer_start = end diff --git a/plugins/SimulationView/SimulationView.py b/plugins/SimulationView/SimulationView.py index a22685bbcd..28d10c5f40 100644 --- a/plugins/SimulationView/SimulationView.py +++ b/plugins/SimulationView/SimulationView.py @@ -73,8 +73,6 @@ class SimulationView(CuraView): self._max_paths = 0 self._current_path_num = 0 self._minimum_path_num = 0 - self.start_elements_index = 0 - self.end_elements_index = 0 self.currentLayerNumChanged.connect(self._onCurrentLayerNumChanged) self._busy = False @@ -252,7 +250,6 @@ class SimulationView(CuraView): self._minimum_layer_num = self._current_layer_num self._startUpdateTopLayers() - self.recalculateStartEndElements() self.currentLayerNumChanged.emit() @@ -267,7 +264,7 @@ class SimulationView(CuraView): self._current_layer_num = self._minimum_layer_num self._startUpdateTopLayers() - self.recalculateStartEndElements() + self.currentLayerNumChanged.emit() def setPath(self, value: int) -> None: @@ -281,7 +278,6 @@ class SimulationView(CuraView): self._minimum_path_num = self._current_path_num self._startUpdateTopLayers() - self.recalculateStartEndElements() self.currentPathNumChanged.emit() def setMinimumPath(self, value: int) -> None: @@ -369,24 +365,6 @@ class SimulationView(CuraView): return 0.0 # If it's still max-float, there are no measurements. Use 0 then. return self._min_thickness - def recalculateStartEndElements(self): - self.start_elements_index = 0 - self.end_elements_index = 0 - scene = self.getController().getScene() - for node in DepthFirstIterator(scene.getRoot()): # type: ignore - layer_data = node.callDecoration("getLayerData") - if not layer_data: - continue - - # Found a the layer data! - element_counts = layer_data.getElementCounts() - for layer in sorted(element_counts.keys()): - if layer == self._current_layer_num: - break - if self._minimum_layer_num > layer: - self.start_elements_index += element_counts[layer] - self.end_elements_index += element_counts[layer] - def getMaxThickness(self) -> float: return self._max_thickness @@ -608,7 +586,6 @@ class SimulationView(CuraView): def _startUpdateTopLayers(self) -> None: if not self._compatibility_mode: return - self.recalculateStartEndElements() if self._top_layers_job: self._top_layers_job.finished.disconnect(self._updateCurrentLayerMesh) self._top_layers_job.cancel() diff --git a/resources/i18n/de_DE/cura.po b/resources/i18n/de_DE/cura.po index 258d0e049b..0cc9834b3b 100644 --- a/resources/i18n/de_DE/cura.po +++ b/resources/i18n/de_DE/cura.po @@ -5602,9 +5602,9 @@ msgstr "Firmware-Update-Prüfer" #~ msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." #~ msgstr "Es wurden neue Drucker gefunden, die Sie zu Ihrem Konto hinzufügen können. Sie finden diese in der Liste gefundener Drucker." -#~ msgctxt "@info:option_text" -#~ msgid "Do not show this message again" -#~ msgstr "Diese Meldung nicht mehr anzeigen" +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Diese Meldung nicht mehr anzeigen" #~ msgctxt "@info:status" #~ msgid "Cura does not accurately display layers when Wire Printing is enabled" diff --git a/resources/i18n/es_ES/cura.po b/resources/i18n/es_ES/cura.po index ad20f9283b..fd3c2fe04f 100644 --- a/resources/i18n/es_ES/cura.po +++ b/resources/i18n/es_ES/cura.po @@ -5603,9 +5603,9 @@ msgstr "Buscador de actualizaciones de firmware" #~ msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." #~ msgstr "Se han encontrado nuevas impresoras conectadas a tu cuenta; puedes verlas en la lista de impresoras descubiertas." -#~ msgctxt "@info:option_text" -#~ msgid "Do not show this message again" -#~ msgstr "No volver a mostrar este mensaje" +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "No volver a mostrar este mensaje" #~ msgctxt "@info:status" #~ msgid "Cura does not accurately display layers when Wire Printing is enabled" diff --git a/resources/i18n/fr_FR/cura.po b/resources/i18n/fr_FR/cura.po index 6f187c914b..da71ecb7ed 100644 --- a/resources/i18n/fr_FR/cura.po +++ b/resources/i18n/fr_FR/cura.po @@ -5603,9 +5603,9 @@ msgstr "Vérificateur des mises à jour du firmware" #~ msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." #~ msgstr "De nouvelles imprimantes ont été trouvées connectées à votre compte. Vous pouvez les trouver dans votre liste d'imprimantes découvertes." -#~ msgctxt "@info:option_text" -#~ msgid "Do not show this message again" -#~ msgstr "Ne plus afficher ce message" +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Ne plus afficher ce message" #~ msgctxt "@info:status" #~ msgid "Cura does not accurately display layers when Wire Printing is enabled" diff --git a/resources/i18n/it_IT/cura.po b/resources/i18n/it_IT/cura.po index 73e8a0e7aa..3316939bfb 100644 --- a/resources/i18n/it_IT/cura.po +++ b/resources/i18n/it_IT/cura.po @@ -5604,9 +5604,9 @@ msgstr "Controllo aggiornamento firmware" #~ msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." #~ msgstr "Sono state trovate nuove stampanti collegate al tuo account. Puoi vederle nell'elenco delle stampanti rilevate." -#~ msgctxt "@info:option_text" -#~ msgid "Do not show this message again" -#~ msgstr "Non mostrare nuovamente questo messaggio" +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Non mostrare nuovamente questo messaggio" #~ msgctxt "@info:status" #~ msgid "Cura does not accurately display layers when Wire Printing is enabled" diff --git a/resources/i18n/ja_JP/cura.po b/resources/i18n/ja_JP/cura.po index 5325bdad94..55d5900090 100644 --- a/resources/i18n/ja_JP/cura.po +++ b/resources/i18n/ja_JP/cura.po @@ -5597,9 +5597,9 @@ msgstr "ファームウェアアップデートチェッカー" #~ msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." #~ msgstr "アカウントに接続された新しいプリンターが見つかりました。検出されたプリンターのリストで確認できます。" -#~ msgctxt "@info:option_text" -#~ msgid "Do not show this message again" -#~ msgstr "今後このメッセージを表示しない" +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "今後このメッセージを表示しない" #~ msgctxt "@info:status" #~ msgid "Cura does not accurately display layers when Wire Printing is enabled" diff --git a/resources/i18n/ko_KR/cura.po b/resources/i18n/ko_KR/cura.po index b81d2323ab..b5cc7e5f53 100644 --- a/resources/i18n/ko_KR/cura.po +++ b/resources/i18n/ko_KR/cura.po @@ -5592,9 +5592,9 @@ msgstr "펌웨어 업데이트 검사기" #~ msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." #~ msgstr "새 프린터가 계정에 연결되어 있습니다. 발견한 프린터를 목록에서 찾을 수 있습니다." -#~ msgctxt "@info:option_text" -#~ msgid "Do not show this message again" -#~ msgstr "다시 메시지 표시 안 함" +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "다시 메시지 표시 안 함" #~ msgctxt "@info:status" #~ msgid "Cura does not accurately display layers when Wire Printing is enabled" diff --git a/resources/i18n/nl_NL/cura.po b/resources/i18n/nl_NL/cura.po index 59f7b83739..3db1c50c61 100644 --- a/resources/i18n/nl_NL/cura.po +++ b/resources/i18n/nl_NL/cura.po @@ -5459,9 +5459,9 @@ msgstr "Firmware-updatecontrole" #~ msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." #~ msgstr "Er zijn nieuwe printers gedetecteerd die zijn verbonden met uw account. U kunt ze vinden in uw lijst met gedetecteerde printers." -#~ msgctxt "@info:option_text" -#~ msgid "Do not show this message again" -#~ msgstr "Dit bericht niet meer weergeven" +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Dit bericht niet meer weergeven" #~ msgctxt "@info:status" #~ msgid "Cura does not accurately display layers when Wire Printing is enabled" diff --git a/resources/i18n/pl_PL/cura.po b/resources/i18n/pl_PL/cura.po index 789f5bb1aa..a9d53b735e 100644 --- a/resources/i18n/pl_PL/cura.po +++ b/resources/i18n/pl_PL/cura.po @@ -5603,9 +5603,9 @@ msgstr "Sprawdzacz Aktualizacji Oprogramowania" #~ msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." #~ msgstr "Nowe drukarki podłączone do Twojego konta zostały znalezione, można je odszukać na liście wykrytych drukarek." -#~ msgctxt "@info:option_text" -#~ msgid "Do not show this message again" -#~ msgstr "Nie pokazuj tego komunikatu ponownie" +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Nie pokazuj tego komunikatu ponownie" #~ msgctxt "@info:status" #~ msgid "Cura does not accurately display layers when Wire Printing is enabled" diff --git a/resources/i18n/pt_BR/cura.po b/resources/i18n/pt_BR/cura.po index 67b851a3e9..b2da8bdb63 100644 --- a/resources/i18n/pt_BR/cura.po +++ b/resources/i18n/pt_BR/cura.po @@ -5606,9 +5606,9 @@ msgstr "Verificador de Atualizações de Firmware" #~ msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." #~ msgstr "Novas impressoras foram encontradas conectadas à sua conta; você as pode ver na sua lista de impressoras descobertas." -#~ msgctxt "@info:option_text" -#~ msgid "Do not show this message again" -#~ msgstr "Não mostrar essa mensagem novamente" +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Não mostrar essa mensagem novamente" #~ msgctxt "@info:status" #~ msgid "Cura does not accurately display layers when Wire Printing is enabled" diff --git a/resources/i18n/pt_PT/cura.po b/resources/i18n/pt_PT/cura.po index f04fdac69d..12a35a6d08 100644 --- a/resources/i18n/pt_PT/cura.po +++ b/resources/i18n/pt_PT/cura.po @@ -5660,9 +5660,9 @@ msgstr "Verificador Atualizações Firmware" #~ msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." #~ msgstr "Foram encontradas novas impressoras associadas à sua conta. Pode encontrá-las na sua lista de impressoras detetadas." -#~ msgctxt "@info:option_text" -#~ msgid "Do not show this message again" -#~ msgstr "Não mostrar esta mensagem novamente" +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Não mostrar esta mensagem novamente" #~ msgctxt "@info:status" #~ msgid "Cura does not accurately display layers when Wire Printing is enabled" diff --git a/resources/i18n/ru_RU/cura.po b/resources/i18n/ru_RU/cura.po index b077225272..3ac5480dda 100644 --- a/resources/i18n/ru_RU/cura.po +++ b/resources/i18n/ru_RU/cura.po @@ -5613,9 +5613,9 @@ msgstr "Проверка обновлений" #~ msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." #~ msgstr "Обнаружены новые принтеры, подключенные к вашей учетной записи; вы можете найти их в списке обнаруженных принтеров." -#~ msgctxt "@info:option_text" -#~ msgid "Do not show this message again" -#~ msgstr "Больше не показывать это сообщение" +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Больше не показывать это сообщение" #~ msgctxt "@info:status" #~ msgid "Cura does not accurately display layers when Wire Printing is enabled" diff --git a/resources/i18n/tr_TR/cura.po b/resources/i18n/tr_TR/cura.po index 9761a802a0..746fa78a76 100644 --- a/resources/i18n/tr_TR/cura.po +++ b/resources/i18n/tr_TR/cura.po @@ -5604,9 +5604,9 @@ msgstr "Bellenim Güncelleme Denetleyicisi" #~ msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." #~ msgstr "Hesabınıza bağlı yeni yazıcılar bulundu. Keşfedilen yazıcılar listenizde bunları görüntüleyebilirsiniz." -#~ msgctxt "@info:option_text" -#~ msgid "Do not show this message again" -#~ msgstr "Bu mesajı bir daha gösterme" +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Bu mesajı bir daha gösterme" #~ msgctxt "@info:status" #~ msgid "Cura does not accurately display layers when Wire Printing is enabled" diff --git a/resources/i18n/zh_CN/cura.po b/resources/i18n/zh_CN/cura.po index 39fbb86ee1..ca73c2ffd1 100644 --- a/resources/i18n/zh_CN/cura.po +++ b/resources/i18n/zh_CN/cura.po @@ -5596,9 +5596,9 @@ msgstr "固件更新检查程序" #~ msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." #~ msgstr "发现有新打印机连接到您的帐户。您可以在已发现的打印机列表中查找新连接的打印机。" -#~ msgctxt "@info:option_text" -#~ msgid "Do not show this message again" -#~ msgstr "不再显示此消息" +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "不再显示此消息" #~ msgctxt "@info:status" #~ msgid "Cura does not accurately display layers when Wire Printing is enabled" diff --git a/resources/i18n/zh_TW/cura.po b/resources/i18n/zh_TW/cura.po index e6b61abd47..bdeb662839 100644 --- a/resources/i18n/zh_TW/cura.po +++ b/resources/i18n/zh_TW/cura.po @@ -5598,9 +5598,9 @@ msgstr "韌體更新檢查" #~ msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." #~ msgstr "新找到的印表機已連接到你的帳戶,你可以在已發現的印表機清單中找到它們。" -#~ msgctxt "@info:option_text" -#~ msgid "Do not show this message again" -#~ msgstr "不要再顯示這個訊息" +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "不要再顯示這個訊息" #~ msgctxt "@info:status" #~ msgid "Cura does not accurately display layers when Wire Printing is enabled" diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 5ce309cf8b..e3e5062049 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -160,7 +160,7 @@ UM.PreferencesPage append({ text: "日本語", code: "ja_JP" }) append({ text: "한국어", code: "ko_KR" }) append({ text: "Nederlands", code: "nl_NL" }) - append({ text: "Polski", code: "pl_PL" }) + //Polish is disabled for being incomplete: append({ text: "Polski", code: "pl_PL" }) append({ text: "Português do Brasil", code: "pt_BR" }) append({ text: "Português", code: "pt_PT" }) append({ text: "Русский", code: "ru_RU" })