mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Force use and update the job name with the loaded project file
CURA-4348 - If no project is loaded beforehand and then a model file is loaded, the job name should be determined with the current machine name and the first loaded model name. - If a project is loaded, the job name should be the same as the project name, and it should not change until another project is loaded.
This commit is contained in:
parent
eaa7b75f0e
commit
052ea7d90a
4 changed files with 20 additions and 4 deletions
|
@ -125,6 +125,8 @@ class CuraApplication(QtApplication):
|
||||||
# Cura will always show the Add Machine Dialog upon start.
|
# Cura will always show the Add Machine Dialog upon start.
|
||||||
stacksValidationFinished = pyqtSignal() # Emitted whenever a validation is finished
|
stacksValidationFinished = pyqtSignal() # Emitted whenever a validation is finished
|
||||||
|
|
||||||
|
projectFileLoaded = pyqtSignal(str) # Emitted whenever a project file is loaded
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
# this list of dir names will be used by UM to detect an old cura directory
|
# this list of dir names will be used by UM to detect an old cura directory
|
||||||
for dir_name in ["extruders", "machine_instances", "materials", "plugins", "quality", "user", "variants"]:
|
for dir_name in ["extruders", "machine_instances", "materials", "plugins", "quality", "user", "variants"]:
|
||||||
|
|
|
@ -66,10 +66,11 @@ class PrintInformation(QObject):
|
||||||
self._base_name = ""
|
self._base_name = ""
|
||||||
self._abbr_machine = ""
|
self._abbr_machine = ""
|
||||||
self._job_name = ""
|
self._job_name = ""
|
||||||
|
self._project_name = ""
|
||||||
|
|
||||||
Application.getInstance().globalContainerStackChanged.connect(self._updateJobName)
|
Application.getInstance().globalContainerStackChanged.connect(self._updateJobName)
|
||||||
Application.getInstance().fileLoaded.connect(self.setBaseName)
|
Application.getInstance().fileLoaded.connect(self.setBaseName)
|
||||||
|
Application.getInstance().projectFileLoaded.connect(self.setProjectName)
|
||||||
Preferences.getInstance().preferenceChanged.connect(self._onPreferencesChanged)
|
Preferences.getInstance().preferenceChanged.connect(self._onPreferencesChanged)
|
||||||
|
|
||||||
self._active_material_container = None
|
self._active_material_container = None
|
||||||
|
@ -78,7 +79,6 @@ class PrintInformation(QObject):
|
||||||
|
|
||||||
self._material_amounts = []
|
self._material_amounts = []
|
||||||
|
|
||||||
|
|
||||||
# Crate cura message translations and using translation keys initialize empty time Duration object for total time
|
# Crate cura message translations and using translation keys initialize empty time Duration object for total time
|
||||||
# and time for each feature
|
# and time for each feature
|
||||||
def initializeCuraMessagePrintTimeProperties(self):
|
def initializeCuraMessagePrintTimeProperties(self):
|
||||||
|
@ -241,6 +241,11 @@ class PrintInformation(QObject):
|
||||||
self._job_name = name
|
self._job_name = name
|
||||||
self.jobNameChanged.emit()
|
self.jobNameChanged.emit()
|
||||||
|
|
||||||
|
@pyqtSlot(str)
|
||||||
|
def setProjectName(self, name):
|
||||||
|
self._project_name = name
|
||||||
|
self.setJobName(name)
|
||||||
|
|
||||||
jobNameChanged = pyqtSignal()
|
jobNameChanged = pyqtSignal()
|
||||||
|
|
||||||
@pyqtProperty(str, notify = jobNameChanged)
|
@pyqtProperty(str, notify = jobNameChanged)
|
||||||
|
@ -248,6 +253,11 @@ class PrintInformation(QObject):
|
||||||
return self._job_name
|
return self._job_name
|
||||||
|
|
||||||
def _updateJobName(self):
|
def _updateJobName(self):
|
||||||
|
# if the project name is set, we use the project name as the job name, so the job name should not get updated
|
||||||
|
# if a model file is loaded after that.
|
||||||
|
if self._project_name != "":
|
||||||
|
return
|
||||||
|
|
||||||
if self._base_name == "":
|
if self._base_name == "":
|
||||||
self._job_name = ""
|
self._job_name = ""
|
||||||
self.jobNameChanged.emit()
|
self.jobNameChanged.emit()
|
||||||
|
|
|
@ -26,6 +26,7 @@ from configparser import ConfigParser
|
||||||
import zipfile
|
import zipfile
|
||||||
import io
|
import io
|
||||||
import configparser
|
import configparser
|
||||||
|
import os
|
||||||
|
|
||||||
i18n_catalog = i18nCatalog("cura")
|
i18n_catalog = i18nCatalog("cura")
|
||||||
|
|
||||||
|
@ -876,6 +877,11 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
|
||||||
nodes = self._3mf_mesh_reader.read(file_name)
|
nodes = self._3mf_mesh_reader.read(file_name)
|
||||||
if nodes is None:
|
if nodes is None:
|
||||||
nodes = []
|
nodes = []
|
||||||
|
|
||||||
|
base_file_name = os.path.basename(file_name)
|
||||||
|
if base_file_name.endswith(".curaproject.3mf"):
|
||||||
|
base_file_name = base_file_name[:base_file_name.rfind(".curaproject.3mf")]
|
||||||
|
Application.getInstance().projectFileLoaded.emit(base_file_name)
|
||||||
return nodes
|
return nodes
|
||||||
|
|
||||||
## HACK: Replaces the material container in the given stack with a newly created material container.
|
## HACK: Replaces the material container in the given stack with a newly created material container.
|
||||||
|
|
|
@ -36,8 +36,6 @@ UM.Dialog
|
||||||
|
|
||||||
var meshName = backgroundItem.getMeshName(projectFile.toString());
|
var meshName = backgroundItem.getMeshName(projectFile.toString());
|
||||||
backgroundItem.hasMesh(decodeURIComponent(meshName));
|
backgroundItem.hasMesh(decodeURIComponent(meshName));
|
||||||
// always update the job name with the loaded project
|
|
||||||
PrintInformation.setBaseName(meshName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadModelFiles(fileUrls)
|
function loadModelFiles(fileUrls)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue