mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-19 02:47:30 +08:00
Merge branch 'master' of github.com:Ultimaker/Cura
This commit is contained in:
commit
9b3a1b4056
@ -309,16 +309,13 @@ class PrintInformation(QObject):
|
||||
|
||||
self.jobNameChanged.emit()
|
||||
|
||||
@pyqtProperty(str)
|
||||
def baseName(self):
|
||||
return self._base_name
|
||||
|
||||
@pyqtSlot(str)
|
||||
def setProjectName(self, name):
|
||||
self.setBaseName(name, is_project_file = True)
|
||||
|
||||
@pyqtSlot(str)
|
||||
def setBaseName(self, base_name, is_project_file = False):
|
||||
baseNameChanged = pyqtSignal()
|
||||
|
||||
def setBaseName(self, base_name: str, is_project_file: bool = False):
|
||||
# Ensure that we don't use entire path but only filename
|
||||
name = os.path.basename(base_name)
|
||||
|
||||
@ -336,6 +333,9 @@ class PrintInformation(QObject):
|
||||
self._base_name = name
|
||||
self._updateJobName()
|
||||
|
||||
@pyqtProperty(str, fset = setBaseName, notify = baseNameChanged)
|
||||
def baseName(self):
|
||||
return self._base_name
|
||||
|
||||
## Created an acronymn-like abbreviated machine name from the currently active machine name
|
||||
# Called each time the global stack is switched
|
||||
@ -395,7 +395,6 @@ class PrintInformation(QObject):
|
||||
|
||||
## Listen to scene changes to check if we need to reset the print information
|
||||
def _onSceneChanged(self, scene_node):
|
||||
|
||||
# Ignore any changes that are not related to sliceable objects
|
||||
if not isinstance(scene_node, SceneNode)\
|
||||
or not scene_node.callDecoration("isSliceable")\
|
||||
|
@ -136,6 +136,8 @@ class ExtruderStack(CuraContainerStack):
|
||||
@override(CuraContainerStack)
|
||||
def deserialize(self, contents: str, file_name: Optional[str] = None) -> None:
|
||||
super().deserialize(contents, file_name)
|
||||
if "enabled" not in self.getMetaData():
|
||||
self.addMetaDataEntry("enabled", "True")
|
||||
stacks = ContainerRegistry.getInstance().findContainerStacks(id=self.getMetaDataEntry("machine", ""))
|
||||
if stacks:
|
||||
self.setNextStack(stacks[0])
|
||||
|
@ -99,6 +99,7 @@ class MachineInfo:
|
||||
class ExtruderInfo:
|
||||
def __init__(self):
|
||||
self.position = None
|
||||
self.enabled = True
|
||||
self.variant_info = None
|
||||
self.root_material_id = None
|
||||
|
||||
@ -425,6 +426,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
||||
|
||||
extruder_info = ExtruderInfo()
|
||||
extruder_info.position = position
|
||||
if parser.has_option("metadata", "enabled"):
|
||||
extruder_info.enabled = parser["metadata"]["enabled"]
|
||||
if variant_id not in ("empty", "empty_variant"):
|
||||
extruder_info.variant_info = instance_container_info_dict[variant_id]
|
||||
if material_id not in ("empty", "empty_material"):
|
||||
@ -946,6 +949,15 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
||||
else:
|
||||
self._quality_type_to_apply = self._machine_info.quality_type
|
||||
|
||||
# Set enabled/disabled for extruders
|
||||
for position, extruder_stack in extruder_stack_dict.items():
|
||||
extruder_info = self._machine_info.extruder_info_dict.get(position)
|
||||
if not extruder_info:
|
||||
continue
|
||||
if "enabled" not in extruder_stack.getMetaData():
|
||||
extruder_stack.addMetaDataEntry("enabled", "True")
|
||||
extruder_stack.setMetaDataEntry("enabled", str(extruder_info.enabled))
|
||||
|
||||
def _updateActiveMachine(self, global_stack):
|
||||
# Actually change the active machine.
|
||||
machine_manager = Application.getInstance().getMachineManager()
|
||||
|
@ -13,7 +13,7 @@ Item {
|
||||
id: base
|
||||
|
||||
property bool activity: CuraApplication.platformActivity
|
||||
property string fileBaseName: ""
|
||||
property string fileBaseName: PrintInformation.baseName
|
||||
|
||||
UM.I18nCatalog { id: catalog; name:"cura"}
|
||||
|
||||
@ -24,26 +24,17 @@ Item {
|
||||
target: backgroundItem
|
||||
onHasMesh:
|
||||
{
|
||||
if (base.fileBaseName == "")
|
||||
if (PrintInformation.baseName == "")
|
||||
{
|
||||
base.fileBaseName = name;
|
||||
PrintInformation.baseName = name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onActivityChanged: {
|
||||
if (activity == true && base.fileBaseName == ''){
|
||||
//this only runs when you open a file from the terminal (or something that works the same way; for example when you drag a file on the icon in MacOS or use 'open with' on Windows)
|
||||
base.fileBaseName = PrintInformation.baseName; //get the fileBaseName from PrintInformation.py because this saves the filebase when the file is opened using the terminal (or something alike)
|
||||
PrintInformation.setBaseName(base.fileBaseName);
|
||||
}
|
||||
if (activity == true && base.fileBaseName != ''){
|
||||
//this runs in all other cases where there is a mesh on the buildplate (activity == true). It uses the fileBaseName from the hasMesh signal
|
||||
PrintInformation.setBaseName(base.fileBaseName);
|
||||
}
|
||||
if (activity == false){
|
||||
if (activity == false) {
|
||||
//When there is no mesh in the buildplate; the printJobTextField is set to an empty string so it doesn't set an empty string as a jobName (which is later used for saving the file)
|
||||
PrintInformation.setBaseName('')
|
||||
PrintInformation.baseName = ''
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user