Skip to content

Commit

Permalink
Merge pull request #18949 from Ultimaker/CURA-11854_fix_intent_selection
Browse files Browse the repository at this point in the history
Improve currentIntentCategory logic
  • Loading branch information
casperlamboo authored Apr 24, 2024
2 parents f86d63b + 6ee91c5 commit 7db39ae
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 5 deletions.
1 change: 0 additions & 1 deletion cura/Machines/Models/ActiveIntentQualitiesModel.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ def _onChanged(self, container: ContainerStack) -> None:

def _update(self):
self._intent_category = IntentManager.getInstance().currentIntentCategory

new_items: List[Dict[str, Any]] = []
global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack()
if not global_stack:
Expand Down
22 changes: 18 additions & 4 deletions cura/Settings/IntentManager.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,10 +145,24 @@ def getDefaultIntent(self) -> "InstanceContainer":
@pyqtProperty(str, notify = intentCategoryChanged)
def currentIntentCategory(self) -> str:
application = cura.CuraApplication.CuraApplication.getInstance()
active_extruder_stack = application.getMachineManager().activeStack
if active_extruder_stack is None:
return ""
return active_extruder_stack.intent.getMetaDataEntry("intent_category", "")
global_stack = application.getGlobalContainerStack()

active_intent = "default"
if global_stack is None:
return active_intent

# Loop over all active extruders and check if they have an intent that isn't default.
# The logic behind this is that support materials (for instance, PVA) don't have intents, but they should be
# combinable with all other intents. So if one extruder has "engineering" as an intent and the other has
# "default" the 'dominant' intent is "engineering"
for extruder_stack in global_stack.extruderList:
if not extruder_stack.isEnabled: # Ignore disabled stacks
continue
extruder_intent = extruder_stack.intent.getMetaDataEntry("intent_category", "")
if extruder_intent != "default":
active_intent = extruder_intent

return active_intent

@pyqtSlot(str, str)
def selectIntent(self, intent_category: str, quality_type: str) -> None:
Expand Down

0 comments on commit 7db39ae

Please sign in to comment.