mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-14 13:06:05 +08:00
Merge branch 'feature_drag_curaprofile' of github.com:Ultimaker/Cura
This commit is contained in:
commit
2eb1c61033
@ -4,7 +4,7 @@
|
|||||||
import os.path
|
import os.path
|
||||||
import urllib
|
import urllib
|
||||||
|
|
||||||
from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal, QUrl
|
from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal, QUrl, QVariant
|
||||||
from PyQt5.QtWidgets import QMessageBox
|
from PyQt5.QtWidgets import QMessageBox
|
||||||
|
|
||||||
import UM.PluginRegistry
|
import UM.PluginRegistry
|
||||||
@ -805,3 +805,50 @@ class ContainerManager(QObject):
|
|||||||
else:
|
else:
|
||||||
quality_changes.setDefinition(QualityManager.getInstance().getParentMachineDefinition(machine_definition))
|
quality_changes.setDefinition(QualityManager.getInstance().getParentMachineDefinition(machine_definition))
|
||||||
return quality_changes
|
return quality_changes
|
||||||
|
|
||||||
|
|
||||||
|
## Import profiles from a list of file_urls.
|
||||||
|
# Each QUrl item must end with .curaprofile, or it will not be imported.
|
||||||
|
#
|
||||||
|
# \param QVariant<QUrl>, essentially a list with QUrl objects.
|
||||||
|
# \return Dict with keys status, text
|
||||||
|
@pyqtSlot(QVariant, result="QVariantMap")
|
||||||
|
def importProfiles(self, file_urls):
|
||||||
|
status = "ok"
|
||||||
|
results = {"ok": [], "error": []}
|
||||||
|
for file_url in file_urls:
|
||||||
|
if not file_url.isValid():
|
||||||
|
continue
|
||||||
|
path = file_url.toLocalFile()
|
||||||
|
if not path:
|
||||||
|
continue
|
||||||
|
if not path.endswith(".curaprofile"):
|
||||||
|
continue
|
||||||
|
|
||||||
|
single_result = UM.Settings.ContainerRegistry.getInstance().importProfile(path)
|
||||||
|
if single_result["status"] == "error":
|
||||||
|
status = "error"
|
||||||
|
results[single_result["status"]].append(single_result["message"])
|
||||||
|
|
||||||
|
return {
|
||||||
|
"status": status,
|
||||||
|
"message": "\n".join(results["ok"] + results["error"])}
|
||||||
|
|
||||||
|
## Import single profile, file_url does not have to end with curaprofile
|
||||||
|
@pyqtSlot(QUrl, result="QVariantMap")
|
||||||
|
def importProfile(self, file_url):
|
||||||
|
if not file_url.isValid():
|
||||||
|
return
|
||||||
|
path = file_url.toLocalFile()
|
||||||
|
if not path:
|
||||||
|
return
|
||||||
|
return UM.Settings.ContainerRegistry.getInstance().importProfile(path)
|
||||||
|
|
||||||
|
@pyqtSlot("QVariantList", QUrl, str)
|
||||||
|
def exportProfile(self, instance_id, file_url, file_type):
|
||||||
|
if not file_url.isValid():
|
||||||
|
return
|
||||||
|
path = file_url.toLocalFile()
|
||||||
|
if not path:
|
||||||
|
return
|
||||||
|
UM.Settings.ContainerRegistry.getInstance().exportProfile(instance_id, path, file_type)
|
||||||
|
@ -246,15 +246,35 @@ UM.MainWindow
|
|||||||
{
|
{
|
||||||
if(drop.urls.length > 0)
|
if(drop.urls.length > 0)
|
||||||
{
|
{
|
||||||
|
// Import models
|
||||||
for(var i in drop.urls)
|
for(var i in drop.urls)
|
||||||
{
|
{
|
||||||
UM.MeshFileHandler.readLocalFile(drop.urls[i]);
|
// There is no endsWith in this version of JS...
|
||||||
if (i == drop.urls.length - 1)
|
if ((drop.urls[i].length <= 12) || (drop.urls[i].substring(drop.urls[i].length-12) !== ".curaprofile")) {
|
||||||
{
|
// Drop an object
|
||||||
var meshName = backgroundItem.getMeshName(drop.urls[i].toString())
|
UM.MeshFileHandler.readLocalFile(drop.urls[i]);
|
||||||
backgroundItem.hasMesh(decodeURIComponent(meshName))
|
if (i == drop.urls.length - 1)
|
||||||
|
{
|
||||||
|
var meshName = backgroundItem.getMeshName(drop.urls[i].toString());
|
||||||
|
backgroundItem.hasMesh(decodeURIComponent(meshName));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Import profiles
|
||||||
|
var import_result = Cura.ContainerManager.importProfiles(drop.urls);
|
||||||
|
if (import_result.message !== "") {
|
||||||
|
messageDialog.text = import_result.message
|
||||||
|
if(import_result.status == "ok")
|
||||||
|
{
|
||||||
|
messageDialog.icon = StandardIcon.Information
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
messageDialog.icon = StandardIcon.Critical
|
||||||
|
}
|
||||||
|
messageDialog.open()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -310,7 +310,7 @@ UM.ManagementPage
|
|||||||
folder: CuraApplication.getDefaultPath("dialog_profile_path")
|
folder: CuraApplication.getDefaultPath("dialog_profile_path")
|
||||||
onAccepted:
|
onAccepted:
|
||||||
{
|
{
|
||||||
var result = base.model.importProfile(fileUrl)
|
var result = Cura.ContainerManager.importProfile(fileUrl);
|
||||||
messageDialog.text = result.message
|
messageDialog.text = result.message
|
||||||
if(result.status == "ok")
|
if(result.status == "ok")
|
||||||
{
|
{
|
||||||
@ -339,7 +339,7 @@ UM.ManagementPage
|
|||||||
onAccepted:
|
onAccepted:
|
||||||
{
|
{
|
||||||
var containers = Cura.ContainerManager.findInstanceContainers({"type": "quality_changes", "name": base.currentItem.name})
|
var containers = Cura.ContainerManager.findInstanceContainers({"type": "quality_changes", "name": base.currentItem.name})
|
||||||
var result = base.model.exportProfile(containers, fileUrl, selectedNameFilter)
|
var result = Cura.ContainerManager.exportProfile(containers, fileUrl, selectedNameFilter)
|
||||||
|
|
||||||
if(result && result.status == "error")
|
if(result && result.status == "error")
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user