mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-12 03:29:00 +08:00
Revert CURA-8055 in the 4.10 branch. This should not have been merged in there.
Revert "Change file extension to .umm" This reverts commit 56db7f7144083df4bca77746d7ee30f2a54fda36. Revert "Re-enable compression" This reverts commit 62bc9be22bbc5595dbfce69893163c3a0ebc4415. Revert "Add documentation" This reverts commit e9031f1aff5d40f3c69ac625edf11963a3253eb8. Revert "Fix writing bytes to string-stream" This reverts commit 66b2825a667f9aa9618005d2a5875383a3658f4f. Revert "Hide button entirely if no export is available" This reverts commit ec727e1068c3ac2cab7f95fb88c5d4d101e28e17. Revert "Basic implementation of exporting all materials in a .zip archive" This reverts commit bdcaef134f556f455f352786123476ec40e3ae4c. Revert "Implement default path for exporting all materials" This reverts commit e66783664bf73dd9b1e3c6af6f01321763470d2e. Revert "Implement a sync button and file dialogue to export all materials" This reverts commit abba3bdd10a994a1b38bcb426a27ba379febeac7. Revert "Add notion of whether printers support the material export archive" This reverts commit f436cb8e7b879a8913b25f2a049413ec0721f1c5.
This commit is contained in:
parent
aabbdd2040
commit
4d29de4579
@ -2,10 +2,9 @@
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import copy # To duplicate materials.
|
||||
from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject, QUrl
|
||||
from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot # To allow the preference page proxy to be used from the actual preferences page.
|
||||
from typing import Any, Dict, Optional, TYPE_CHECKING
|
||||
import uuid # To generate new GUIDs for new materials.
|
||||
import zipfile # To export all materials in a .zip archive.
|
||||
|
||||
from UM.i18n import i18nCatalog
|
||||
from UM.Logger import Logger
|
||||
@ -25,11 +24,6 @@ class MaterialManagementModel(QObject):
|
||||
|
||||
This class handles the actions in that page, such as creating new materials, renaming them, etc.
|
||||
"""
|
||||
def __init__(self, parent: QObject) -> None:
|
||||
super().__init__(parent)
|
||||
cura_application = cura.CuraApplication.CuraApplication.getInstance()
|
||||
self._preferred_export_all_path = None # type: Optional[QUrl] # Path to export all materials to. None if not yet initialised.
|
||||
cura_application.getOutputDeviceManager().outputDevicesChanged.connect(self._onOutputDevicesChanged)
|
||||
|
||||
favoritesChanged = pyqtSignal(str)
|
||||
"""Triggered when a favorite is added or removed.
|
||||
@ -270,52 +264,3 @@ class MaterialManagementModel(QObject):
|
||||
self.favoritesChanged.emit(material_base_file)
|
||||
except ValueError: # Material was not in the favorites list.
|
||||
Logger.log("w", "Material {material_base_file} was already not a favorite material.".format(material_base_file = material_base_file))
|
||||
|
||||
def _onOutputDevicesChanged(self) -> None:
|
||||
"""
|
||||
When the list of output devices changes, we may want to update the
|
||||
preferred export path.
|
||||
"""
|
||||
cura_application = cura.CuraApplication.CuraApplication.getInstance()
|
||||
device_manager = cura_application.getOutputDeviceManager()
|
||||
devices = device_manager.getOutputDevices()
|
||||
for device in devices:
|
||||
if device.__class__.__name__ == "RemovableDriveOutputDevice":
|
||||
self._preferred_export_all_path = QUrl.fromLocalFile(device.getId())
|
||||
break
|
||||
else: # No removable drives? Use local path.
|
||||
self._preferred_export_all_path = cura_application.getDefaultPath("dialog_material_path")
|
||||
self.outputDevicesChanged.emit()
|
||||
|
||||
outputDevicesChanged = pyqtSignal() # Triggered when adding or removing removable drives.
|
||||
@pyqtProperty(QUrl, notify = outputDevicesChanged)
|
||||
def preferredExportAllPath(self) -> QUrl:
|
||||
"""
|
||||
Get the preferred path to export materials to.
|
||||
|
||||
If there is a removable drive, that should be the preferred path. Otherwise it should be the most recent local
|
||||
file path.
|
||||
:return: The preferred path to export all materials to.
|
||||
"""
|
||||
if self._preferred_export_all_path is None: # Not initialised yet. Can happen when output devices changed before class got created.
|
||||
self._onOutputDevicesChanged()
|
||||
return self._preferred_export_all_path
|
||||
|
||||
@pyqtSlot(QUrl)
|
||||
def exportAll(self, file_path: QUrl) -> None:
|
||||
"""
|
||||
Export all materials to a certain file path.
|
||||
:param file_path: The path to export the materials to.
|
||||
"""
|
||||
registry = CuraContainerRegistry.getInstance()
|
||||
|
||||
archive = zipfile.ZipFile(file_path.toLocalFile(), "w", compression = zipfile.ZIP_DEFLATED)
|
||||
for metadata in registry.findInstanceContainersMetadata(type = "material"):
|
||||
if metadata["base_file"] != metadata["id"]: # Only process base files.
|
||||
continue
|
||||
if metadata["id"] == "empty_material": # Don't export the empty material.
|
||||
continue
|
||||
material = registry.findContainers(id = metadata["id"])[0]
|
||||
suffix = registry.getMimeTypeForContainer(type(material)).preferredSuffix
|
||||
filename = metadata["id"] + "." + suffix
|
||||
archive.writestr(filename, material.serialize())
|
||||
|
@ -86,14 +86,6 @@ class GlobalStack(CuraContainerStack):
|
||||
def supportsNetworkConnection(self):
|
||||
return self.getMetaDataEntry("supports_network_connection", False)
|
||||
|
||||
@pyqtProperty(bool, constant = True)
|
||||
def supportsMaterialExport(self):
|
||||
"""
|
||||
Whether the printer supports Cura's export format of material profiles.
|
||||
:return: ``True`` if it supports it, or ``False`` if not.
|
||||
"""
|
||||
return self.getMetaDataEntry("supports_material_export", False)
|
||||
|
||||
@classmethod
|
||||
def getLoadingPriority(cls) -> int:
|
||||
return 2
|
||||
|
@ -22,8 +22,7 @@
|
||||
"0": "ultimaker2_plus_connect_extruder_0"
|
||||
},
|
||||
"supports_usb_connection": false,
|
||||
"supports_network_connection": true,
|
||||
"supports_material_export": true
|
||||
"supports_network_connection": true
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
|
@ -27,7 +27,6 @@
|
||||
"first_start_actions": [ "DiscoverUM3Action" ],
|
||||
"supported_actions": [ "DiscoverUM3Action" ],
|
||||
"supports_usb_connection": false,
|
||||
"supports_material_export": true,
|
||||
"weight": -1,
|
||||
"firmware_update_info": {
|
||||
"id": 213482,
|
||||
|
@ -28,7 +28,6 @@
|
||||
"supported_actions": [ "DiscoverUM3Action" ],
|
||||
"supports_usb_connection": false,
|
||||
"supports_network_connection": true,
|
||||
"supports_material_export": true,
|
||||
"weight": -2,
|
||||
"firmware_update_info": {
|
||||
"id": 9051,
|
||||
|
@ -1,5 +1,5 @@
|
||||
// Copyright (c) 2021 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
// Copyright (c) 2018 Ultimaker B.V.
|
||||
// Uranium is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.7
|
||||
import QtQuick.Controls 1.4
|
||||
@ -191,20 +191,6 @@ Item
|
||||
}
|
||||
enabled: base.hasCurrentItem
|
||||
}
|
||||
|
||||
//Sync button.
|
||||
Button
|
||||
{
|
||||
id: syncMaterialsButton
|
||||
text: catalog.i18nc("@action:button Sending materials to printers", "Sync with Printers")
|
||||
iconName: "sync-synchronizing"
|
||||
onClicked:
|
||||
{
|
||||
forceActiveFocus();
|
||||
exportAllMaterialsDialog.open();
|
||||
}
|
||||
visible: Cura.MachineManager.activeMachine.supportsMaterialExport
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
@ -382,20 +368,6 @@ Item
|
||||
}
|
||||
}
|
||||
|
||||
FileDialog
|
||||
{
|
||||
id: exportAllMaterialsDialog
|
||||
title: catalog.i18nc("@title:window", "Export All Materials")
|
||||
selectExisting: false
|
||||
nameFilters: ["Material archives (*.umm)", "All files (*)"]
|
||||
folder: base.materialManagementModel.preferredExportAllPath
|
||||
onAccepted:
|
||||
{
|
||||
base.materialManagementModel.exportAll(fileUrl);
|
||||
CuraApplication.setDefaultPath("dialog_material_path", folder);
|
||||
}
|
||||
}
|
||||
|
||||
MessageDialog
|
||||
{
|
||||
id: messageDialog
|
||||
|
Loading…
x
Reference in New Issue
Block a user