From 7731f9406c1807f9e63f6dab154a09910739525e Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Tue, 19 Jul 2016 15:59:44 +0200 Subject: [PATCH] Dialog_profile/material/load_path is now saved and used. CURA-1900 --- cura/CuraApplication.py | 22 +++++++++++++++++---- resources/qml/Cura.qml | 3 ++- resources/qml/Preferences/MaterialsPage.qml | 6 ++++-- resources/qml/Preferences/ProfilesPage.qml | 6 ++++-- 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 1164c57008..29c1f086b4 100644 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -194,6 +194,14 @@ class CuraApplication(QtApplication): Preferences.getInstance().addPreference("view/center_on_select", True) Preferences.getInstance().addPreference("mesh/scale_to_fit", True) Preferences.getInstance().addPreference("mesh/scale_tiny_meshes", True) + + for key in [ + "dialog_load_path", # dialog_save_path is in LocalFileOutputDevicePlugin + "dialog_profile_path", + "dialog_material_path"]: + + Preferences.getInstance().addPreference("local_file/%s" % key, "~/") + Preferences.getInstance().setDefault("local_file/last_used_type", "text/x-gcode") Preferences.getInstance().setDefault("general/visible_settings", """ @@ -332,10 +340,16 @@ class CuraApplication(QtApplication): f.write(data) - @pyqtSlot(result = QUrl) - def getDefaultPath(self): - return QUrl.fromLocalFile(os.path.expanduser("~/")) - + @pyqtSlot(str, result = QUrl) + def getDefaultPath(self, key): + #return QUrl.fromLocalFile(os.path.expanduser("~/")) + default_path = Preferences.getInstance().getValue("local_file/%s" % key) + return QUrl.fromLocalFile(default_path) + + @pyqtSlot(str, str) + def setDefaultPath(self, key, default_path): + Preferences.getInstance().setValue("local_file/%s" % key, default_path) + ## Handle loading of all plugin types (and the backend explicitly) # \sa PluginRegistery def _loadPlugins(self): diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 8404db01fa..c449b4c83e 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -638,7 +638,7 @@ UM.MainWindow //TODO: Support multiple file selection, workaround bug in KDE file dialog //selectMultiple: true nameFilters: UM.MeshFileHandler.supportedReadFileTypes; - folder: Printer.getDefaultPath() + folder: CuraApplication.getDefaultPath("dialog_load_path") onAccepted: { //Because several implementations of the file dialog only update the folder @@ -646,6 +646,7 @@ UM.MainWindow var f = folder; folder = f; + CuraApplication.setDefaultPath("dialog_load_path", folder); UM.MeshFileHandler.readLocalFile(fileUrl) var meshName = backgroundItem.getMeshName(fileUrl.toString()) backgroundItem.hasMesh(decodeURIComponent(meshName)) diff --git a/resources/qml/Preferences/MaterialsPage.qml b/resources/qml/Preferences/MaterialsPage.qml index 18059545e2..aaaa4f5e9d 100644 --- a/resources/qml/Preferences/MaterialsPage.qml +++ b/resources/qml/Preferences/MaterialsPage.qml @@ -200,7 +200,7 @@ UM.ManagementPage title: catalog.i18nc("@title:window", "Import Material"); selectExisting: true; nameFilters: Cura.ContainerManager.getContainerNameFilters("material") - folder: CuraApplication.getDefaultPath() + folder: CuraApplication.getDefaultPath("dialog_material_path") onAccepted: { var result = Cura.ContainerManager.importContainer(fileUrl) @@ -221,6 +221,7 @@ UM.ManagementPage messageDialog.icon = StandardIcon.Critical } messageDialog.open() + CuraApplication.setDefaultPath("dialog_material_path", folder) } } @@ -230,7 +231,7 @@ UM.ManagementPage title: catalog.i18nc("@title:window", "Export Material"); selectExisting: false; nameFilters: Cura.ContainerManager.getContainerNameFilters("material") - folder: CuraApplication.getDefaultPath() + folder: CuraApplication.getDefaultPath("dialog_material_path") onAccepted: { if(base.currentItem.metadata.base_file) @@ -255,6 +256,7 @@ UM.ManagementPage messageDialog.text = catalog.i18nc("@info:status", "Successfully exported material to %1").arg(fileUrl) messageDialog.open() } + CuraApplication.setDefaultPath("dialog_material_path", folder) } } diff --git a/resources/qml/Preferences/ProfilesPage.qml b/resources/qml/Preferences/ProfilesPage.qml index 5a56ac8dc3..119a16facc 100644 --- a/resources/qml/Preferences/ProfilesPage.qml +++ b/resources/qml/Preferences/ProfilesPage.qml @@ -291,7 +291,7 @@ UM.ManagementPage title: catalog.i18nc("@title:window", "Import Profile"); selectExisting: true; nameFilters: base.model.getFileNameFilters("profile_reader") - folder: base.model.getDefaultPath() + folder: CuraApplication.getDefaultPath("dialog_profile_path") onAccepted: { var result = base.model.importProfile(fileUrl) @@ -309,6 +309,7 @@ UM.ManagementPage messageDialog.icon = StandardIcon.Critical } messageDialog.open() + CuraApplication.setDefaultPath("dialog_profile_path", folder) } } @@ -318,7 +319,7 @@ UM.ManagementPage title: catalog.i18nc("@title:window", "Export Profile"); selectExisting: false; nameFilters: base.model.getFileNameFilters("profile_writer") - folder: base.model.getDefaultPath() + folder: CuraApplication.getDefaultPath("dialog_profile_path") onAccepted: { var result = base.model.exportProfile(base.currentItem.id, fileUrl, selectedNameFilter) @@ -329,6 +330,7 @@ UM.ManagementPage messageDialog.open() } // else pop-up Message thing from python code + CuraApplication.setDefaultPath("dialog_profile_path", folder) } } }