mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-14 03:35:57 +08:00
Add favorites funcitonality to MaterialManager.py
Contributes to CURA-5378
This commit is contained in:
parent
68bccd8bf7
commit
6d1fd8281c
@ -4,6 +4,7 @@
|
|||||||
from collections import defaultdict, OrderedDict
|
from collections import defaultdict, OrderedDict
|
||||||
import copy
|
import copy
|
||||||
import uuid
|
import uuid
|
||||||
|
import json
|
||||||
from typing import Dict, Optional, TYPE_CHECKING
|
from typing import Dict, Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from PyQt5.Qt import QTimer, QObject, pyqtSignal, pyqtSlot
|
from PyQt5.Qt import QTimer, QObject, pyqtSignal, pyqtSlot
|
||||||
@ -38,7 +39,8 @@ if TYPE_CHECKING:
|
|||||||
#
|
#
|
||||||
class MaterialManager(QObject):
|
class MaterialManager(QObject):
|
||||||
|
|
||||||
materialsUpdated = pyqtSignal() # Emitted whenever the material lookup tables are updated.
|
materialsUpdated = pyqtSignal() # Emitted whenever the material lookup tables are updated.
|
||||||
|
favoritesUpdated = pyqtSignal() # Emitted whenever the favorites are changed
|
||||||
|
|
||||||
def __init__(self, container_registry, parent = None):
|
def __init__(self, container_registry, parent = None):
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
@ -75,6 +77,8 @@ class MaterialManager(QObject):
|
|||||||
self._container_registry.containerAdded.connect(self._onContainerMetadataChanged)
|
self._container_registry.containerAdded.connect(self._onContainerMetadataChanged)
|
||||||
self._container_registry.containerRemoved.connect(self._onContainerMetadataChanged)
|
self._container_registry.containerRemoved.connect(self._onContainerMetadataChanged)
|
||||||
|
|
||||||
|
self._favorites = set()
|
||||||
|
|
||||||
def initialize(self):
|
def initialize(self):
|
||||||
# Find all materials and put them in a matrix for quick search.
|
# Find all materials and put them in a matrix for quick search.
|
||||||
material_metadatas = {metadata["id"]: metadata for metadata in
|
material_metadatas = {metadata["id"]: metadata for metadata in
|
||||||
@ -194,6 +198,14 @@ class MaterialManager(QObject):
|
|||||||
|
|
||||||
self.materialsUpdated.emit()
|
self.materialsUpdated.emit()
|
||||||
|
|
||||||
|
favorites = self._application.getPreferences().getValue("cura/favorite_materials")
|
||||||
|
print(favorites)
|
||||||
|
for item in favorites:
|
||||||
|
print(item)
|
||||||
|
self._favorites.add(item)
|
||||||
|
print("LOADED FAVES", self._favorites)
|
||||||
|
self.favoritesUpdated.emit()
|
||||||
|
|
||||||
def __addMaterialMetadataIntoLookupTree(self, material_metadata: dict) -> None:
|
def __addMaterialMetadataIntoLookupTree(self, material_metadata: dict) -> None:
|
||||||
material_id = material_metadata["id"]
|
material_id = material_metadata["id"]
|
||||||
|
|
||||||
@ -608,3 +620,29 @@ class MaterialManager(QObject):
|
|||||||
new_base_id = new_id,
|
new_base_id = new_id,
|
||||||
new_metadata = new_metadata)
|
new_metadata = new_metadata)
|
||||||
return new_id
|
return new_id
|
||||||
|
|
||||||
|
@pyqtSlot(str)
|
||||||
|
def addFavorite(self, root_material_id: str):
|
||||||
|
print(root_material_id)
|
||||||
|
self._favorites.add(root_material_id)
|
||||||
|
self.favoritesUpdated.emit()
|
||||||
|
print(self._favorites)
|
||||||
|
print(list(self._favorites))
|
||||||
|
|
||||||
|
# Ensure all settings are saved.
|
||||||
|
self._application.getPreferences().setValue("cura/favorite_materials", list(self._favorites))
|
||||||
|
self._application.saveSettings()
|
||||||
|
|
||||||
|
@pyqtSlot(str)
|
||||||
|
def removeFavorite(self, root_material_id: str):
|
||||||
|
self._favorites.remove(root_material_id)
|
||||||
|
self.favoritesUpdated.emit()
|
||||||
|
print(self._favorites)
|
||||||
|
|
||||||
|
# Ensure all settings are saved.
|
||||||
|
self._application.getPreferences().setValue("cura/favorite_materials", list(self._favorites))
|
||||||
|
self._application.saveSettings()
|
||||||
|
|
||||||
|
@pyqtSlot()
|
||||||
|
def getFavorites(self):
|
||||||
|
return self._favorites
|
Loading…
x
Reference in New Issue
Block a user