Merge pull request #18754 from Ultimaker/CURA-11783-enum-instead-of-text-value

Cura 11783 enum instead of text value
This commit is contained in:
HellAholic 2024-03-29 15:26:51 +01:00 committed by GitHub
commit 6d5966472c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 42 additions and 6 deletions

View file

@ -3,6 +3,7 @@
from PyQt6.QtCore import Qt, pyqtSignal from PyQt6.QtCore import Qt, pyqtSignal
from UM import i18nCatalog
from UM.Logger import Logger from UM.Logger import Logger
from UM.Settings.SettingDefinition import SettingDefinition from UM.Settings.SettingDefinition import SettingDefinition
from UM.Qt.ListModel import ListModel from UM.Qt.ListModel import ListModel
@ -19,7 +20,7 @@ class SpecificSettingsModel(ListModel):
self.addRoleName(self.LabelRole, "label") self.addRoleName(self.LabelRole, "label")
self.addRoleName(self.ValueRole, "value") self.addRoleName(self.ValueRole, "value")
self._i18n_catalog = None self._settings_catalog = i18nCatalog("fdmprinter.def.json")
self._update() self._update()
modelChanged = pyqtSignal() modelChanged = pyqtSignal()
@ -32,13 +33,24 @@ class SpecificSettingsModel(ListModel):
setting_type = stack.getProperty(setting, "type") setting_type = stack.getProperty(setting, "type")
if setting_type is not None: if setting_type is not None:
# This is not very good looking, but will do for now # This is not very good looking, but will do for now
value = str(SettingDefinition.settingValueToString(setting_type, value)) + " " + str(unit) value = str(SettingDefinition.settingValueToString(setting_type, value))
if unit:
value += " " + str(unit)
if setting_type == "enum":
options = stack.getProperty(setting, "options")
value_msgctxt = f"{str(setting)} option {str(value)}"
value_msgid = options[stack.getProperty(setting, "value")]
value = self._settings_catalog.i18nc(value_msgctxt, value_msgid)
else: else:
value = str(value) value = str(value)
label_msgctxt = f"{str(setting)} label"
label_msgid = stack.getProperty(setting, "label")
label = self._settings_catalog.i18nc(label_msgctxt, label_msgid)
self.appendItem({ self.appendItem({
"category": category, "category": category,
"label": stack.getProperty(setting, "label"), "label": label,
"value": value "value": value
}) })
self.modelChanged.emit() self.modelChanged.emit()

View file

@ -216,6 +216,16 @@ UM.Dialog
headers: ["category", "label", "value"] headers: ["category", "label", "value"]
rows: manager.exportedSettingModelItems rows: manager.exportedSettingModelItems
} }
Connections
{
target: manager
function onExportedSettingModelChanged()
{
tableModel.clear()
tableModel.rows = manager.exportedSettingModelItems
}
}
} }
} }

View file

@ -6,11 +6,12 @@ from PyQt6.QtCore import QObject, pyqtProperty, pyqtSignal
class SettingExport(QObject): class SettingExport(QObject):
def __init__(self, id, name, value, selectable, show): def __init__(self, id, name, value, value_name, selectable, show):
super().__init__() super().__init__()
self.id = id self.id = id
self._name = name self._name = name
self._value = value self._value = value
self._value_name = value_name
self._selected = selectable self._selected = selectable
self._selectable = selectable self._selectable = selectable
self._show_in_menu = show self._show_in_menu = show
@ -23,6 +24,10 @@ class SettingExport(QObject):
def value(self): def value(self):
return self._value return self._value
@pyqtProperty(str, constant=True)
def valuename(self):
return str(self._value_name)
selectedChanged = pyqtSignal(bool) selectedChanged = pyqtSignal(bool)
def setSelected(self, selected): def setSelected(self, selected):

View file

@ -24,7 +24,7 @@ RowLayout
UM.Label UM.Label
{ {
text: modelData.value text: modelData.valuename
} }
UM.HelpIcon UM.HelpIcon

View file

@ -6,6 +6,7 @@ from typing import Optional, cast, List, Dict, Pattern, Set
from PyQt6.QtCore import QObject, pyqtProperty from PyQt6.QtCore import QObject, pyqtProperty
from UM import i18nCatalog
from UM.Settings.SettingDefinition import SettingDefinition from UM.Settings.SettingDefinition import SettingDefinition
from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.InstanceContainer import InstanceContainer
from UM.Settings.SettingFunction import SettingFunction from UM.Settings.SettingFunction import SettingFunction
@ -109,6 +110,7 @@ class SettingsExportModel(QObject):
@staticmethod @staticmethod
def _exportSettings(settings_stack): def _exportSettings(settings_stack):
settings_catalog = i18nCatalog("fdmprinter.def.json")
user_settings_container = settings_stack.userChanges user_settings_container = settings_stack.userChanges
user_keys = user_settings_container.getAllKeys() user_keys = user_settings_container.getAllKeys()
exportable_settings = SettingsExportModel.EXPORTABLE_SETTINGS exportable_settings = SettingsExportModel.EXPORTABLE_SETTINGS
@ -118,9 +120,15 @@ class SettingsExportModel(QObject):
for setting_to_export in user_keys: for setting_to_export in user_keys:
show_in_menu = setting_to_export not in SettingsExportModel.PER_MODEL_EXPORTABLE_SETTINGS_KEYS show_in_menu = setting_to_export not in SettingsExportModel.PER_MODEL_EXPORTABLE_SETTINGS_KEYS
label = settings_stack.getProperty(setting_to_export, "label") label_msgtxt = f"{str(setting_to_export)} label"
label_msgid = settings_stack.getProperty(setting_to_export, "label")
label = settings_catalog.i18nc(label_msgtxt, label_msgid)
value = settings_stack.getProperty(setting_to_export, "value") value = settings_stack.getProperty(setting_to_export, "value")
unit = settings_stack.getProperty(setting_to_export, "unit") unit = settings_stack.getProperty(setting_to_export, "unit")
options = settings_stack.getProperty(setting_to_export, "options")
value_msgctxt = f"{str(setting_to_export)} option {str(value)}"
value_msgid = options.get(value, "")
value_name = settings_catalog.i18nc(value_msgctxt, value_msgid)
setting_type = settings_stack.getProperty(setting_to_export, "type") setting_type = settings_stack.getProperty(setting_to_export, "type")
if setting_type is not None: if setting_type is not None:
@ -131,6 +139,7 @@ class SettingsExportModel(QObject):
settings_export.append(SettingExport(setting_to_export, settings_export.append(SettingExport(setting_to_export,
label, label,
value, value,
value_name,
is_exportable or setting_to_export in exportable_settings, is_exportable or setting_to_export in exportable_settings,
show_in_menu)) show_in_menu))