Use optional last output (file) name from output-dev to set project name.

Instead of relying on the filename emitted when the workspace is changed. This is done so the user can also change the project name when saving to an output device, such as a local file, or the digital library, that supports changeing the (file)name.

CURA-8358
This commit is contained in:
Remco Burema 2021-09-01 16:04:05 +02:00
parent 6ad358a55d
commit c2c53d51c1
No known key found for this signature in database
GPG key ID: 215C49431D43F98C
3 changed files with 17 additions and 7 deletions

View file

@ -13,6 +13,7 @@ from UM.Qt.Duration import Duration
from UM.Scene.SceneNode import SceneNode
from UM.i18n import i18nCatalog
from UM.MimeTypeDatabase import MimeTypeDatabase, MimeTypeNotFoundError
from UM.OutputDevice import OutputDevice
if TYPE_CHECKING:
from cura.CuraApplication import CuraApplication
@ -67,7 +68,8 @@ class PrintInformation(QObject):
self._application.globalContainerStackChanged.connect(self._updateJobName)
self._application.globalContainerStackChanged.connect(self.setToZeroPrintInformation)
self._application.fileLoaded.connect(self.setBaseName)
self._application.workspaceLoaded.connect(self._onWorkspaceLoaded)
self._application.workspaceLoaded.connect(self.setProjectName)
self._application.getOutputDeviceManager().writeStarted.connect(self._onOutputStart)
self._application.getMachineManager().rootMaterialChanged.connect(self._onActiveMaterialsChanged)
self._application.getInstance().getPreferences().preferenceChanged.connect(self._onPreferencesChanged)
@ -440,6 +442,12 @@ class PrintInformation(QObject):
self.setToZeroPrintInformation(self._active_build_plate)
def _onWorkspaceLoaded(self, new_name: str) -> None:
"""Update the job name whenever a new workspace is loaded."""
self.setJobName(os.path.splitext(os.path.basename(new_name))[0])
def _onOutputStart(self, output_device: OutputDevice) -> None:
"""If this is the sort of output 'device' (like local or online file storage, rather than a printer),
the user could have altered the file-name, and thus the project name should be altered as well."""
new_name = output_device.getLastOutputName()
if new_name is not None:
if len(os.path.dirname(new_name)) > 0:
self.setProjectName(new_name)
else:
self.setJobName(new_name)