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:
Nino van Hooff 2019-10-01 11:54:53 +02:00
parent eb1d0248c2
commit 2df0d96923
3 changed files with 23 additions and 5 deletions

View file

@ -1600,8 +1600,11 @@ class CuraApplication(QtApplication):
openProjectFile = pyqtSignal(QUrl, arguments = ["project_file"]) # Emitted when a project file is about to open.
@pyqtSlot(QUrl, bool)
def readLocalFile(self, file, skip_project_file_check = False):
@pyqtSlot(QUrl, str)
## 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():
return
@ -1612,10 +1615,25 @@ class CuraApplication(QtApplication):
self.deleteAll()
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)
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"):
Selection.clear()