mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-19 12:47:49 -06:00
Consider user preference when opening project files from cli.
The logic using just a "skip_project_file_check" boolean was too obscure imho, so used a string value with more explicit values to improve readability CURA-6824
This commit is contained in:
parent
eb1d0248c2
commit
2df0d96923
3 changed files with 23 additions and 5 deletions
|
@ -1600,8 +1600,11 @@ class CuraApplication(QtApplication):
|
||||||
|
|
||||||
openProjectFile = pyqtSignal(QUrl, arguments = ["project_file"]) # Emitted when a project file is about to open.
|
openProjectFile = pyqtSignal(QUrl, arguments = ["project_file"]) # Emitted when a project file is about to open.
|
||||||
|
|
||||||
@pyqtSlot(QUrl, bool)
|
@pyqtSlot(QUrl, str)
|
||||||
def readLocalFile(self, file, skip_project_file_check = False):
|
## Open a local file
|
||||||
|
# \param force_project_mode \type{str} Either "open_as_model" or "open_as_project". This parameter is only
|
||||||
|
# considered if the file is a project file.
|
||||||
|
def readLocalFile(self, file, force_project_mode = None):
|
||||||
if not file.isValid():
|
if not file.isValid():
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -1612,10 +1615,25 @@ class CuraApplication(QtApplication):
|
||||||
self.deleteAll()
|
self.deleteAll()
|
||||||
break
|
break
|
||||||
|
|
||||||
if not skip_project_file_check and self.checkIsValidProjectFile(file):
|
is_project_file = self.checkIsValidProjectFile(file)
|
||||||
|
project_mode = force_project_mode
|
||||||
|
|
||||||
|
if project_mode is None:
|
||||||
|
project_mode = self.getPreferences().getValue("cura/choice_on_open_project")
|
||||||
|
|
||||||
|
if is_project_file and project_mode == "open_as_project":
|
||||||
|
# open as project immediately without presenting a dialog
|
||||||
|
workspace_handler = self.getWorkspaceFileHandler()
|
||||||
|
workspace_handler.readLocalFile(file)
|
||||||
|
return
|
||||||
|
|
||||||
|
if is_project_file and project_mode == "always_ask":
|
||||||
|
# present a dialog asking to open as project or import models
|
||||||
self.callLater(self.openProjectFile.emit, file)
|
self.callLater(self.openProjectFile.emit, file)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Either the file is a model file or we want to load only models from project. Continue to load models.
|
||||||
|
|
||||||
if self.getPreferences().getValue("cura/select_models_on_load"):
|
if self.getPreferences().getValue("cura/select_models_on_load"):
|
||||||
Selection.clear()
|
Selection.clear()
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,7 @@ class SingleInstance:
|
||||||
if command == "clear-all":
|
if command == "clear-all":
|
||||||
self._application.callLater(lambda: self._application.deleteAll())
|
self._application.callLater(lambda: self._application.deleteAll())
|
||||||
|
|
||||||
# Command: Load a model file
|
# Command: Load a model or project file
|
||||||
elif command == "open":
|
elif command == "open":
|
||||||
self._application.callLater(lambda f = payload["filePath"]: self._application._openFile(f))
|
self._application.callLater(lambda f = payload["filePath"]: self._application._openFile(f))
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ UM.Dialog
|
||||||
UM.Preferences.setValue("cura/choice_on_open_project", "open_as_model")
|
UM.Preferences.setValue("cura/choice_on_open_project", "open_as_model")
|
||||||
}
|
}
|
||||||
|
|
||||||
CuraApplication.readLocalFile(base.fileUrl, true)
|
CuraApplication.readLocalFile(base.fileUrl, "open_as_model")
|
||||||
var meshName = backgroundItem.getMeshName(base.fileUrl.toString())
|
var meshName = backgroundItem.getMeshName(base.fileUrl.toString())
|
||||||
backgroundItem.hasMesh(decodeURIComponent(meshName))
|
backgroundItem.hasMesh(decodeURIComponent(meshName))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue