WIP: Materials management page, make Activate work

This commit is contained in:
Lipu Fei 2018-02-15 15:47:00 +01:00
parent 4468f4d620
commit a0b53dc1c9
3 changed files with 40 additions and 10 deletions

View file

@ -3,6 +3,7 @@
import UM.Settings.Models.SettingVisibilityHandler import UM.Settings.Models.SettingVisibilityHandler
class MaterialSettingsVisibilityHandler(UM.Settings.Models.SettingVisibilityHandler.SettingVisibilityHandler): class MaterialSettingsVisibilityHandler(UM.Settings.Models.SettingVisibilityHandler.SettingVisibilityHandler):
def __init__(self, parent = None, *args, **kwargs): def __init__(self, parent = None, *args, **kwargs):
super().__init__(parent = parent, *args, **kwargs) super().__init__(parent = parent, *args, **kwargs)

View file

@ -205,6 +205,7 @@ class NewMaterialsModel(ListModel):
GuidRole = Qt.UserRole + 12 GuidRole = Qt.UserRole + 12
DensityRole = Qt.UserRole + 13 DensityRole = Qt.UserRole + 13
DiameterRole = Qt.UserRole + 14 DiameterRole = Qt.UserRole + 14
IsReadOnlyRole = Qt.UserRole + 15
def __init__(self, parent = None): def __init__(self, parent = None):
super().__init__(parent) super().__init__(parent)
@ -224,8 +225,10 @@ class NewMaterialsModel(ListModel):
self.addRoleName(self.GuidRole, "guid") self.addRoleName(self.GuidRole, "guid")
self.addRoleName(self.DensityRole, "density") self.addRoleName(self.DensityRole, "density")
self.addRoleName(self.DiameterRole, "diameter") self.addRoleName(self.DiameterRole, "diameter")
self.addRoleName(self.IsReadOnlyRole, "is_read_only")
from cura.CuraApplication import CuraApplication from cura.CuraApplication import CuraApplication
self._container_registry = CuraApplication.getInstance().getContainerRegistry()
machine_manager = CuraApplication.getInstance().getMachineManager() machine_manager = CuraApplication.getInstance().getMachineManager()
extruder_manager = CuraApplication.getInstance().getExtruderManager() extruder_manager = CuraApplication.getInstance().getExtruderManager()
material_manager = CuraApplication.getInstance()._material_manager material_manager = CuraApplication.getInstance()._material_manager
@ -259,6 +262,7 @@ class NewMaterialsModel(ListModel):
"container_id": container_node.metadata["id"], "container_id": container_node.metadata["id"],
"density": container_node.metadata.get("properties", {}).get("density", ""), "density": container_node.metadata.get("properties", {}).get("density", ""),
"diameter": container_node.metadata.get("properties", {}).get("diameter", ""), "diameter": container_node.metadata.get("properties", {}).get("diameter", ""),
"is_read_only": self._container_registry.isReadOnly(container_node.metadata["id"]),
} }
for key in keys_to_fetch: for key in keys_to_fetch:

View file

@ -34,6 +34,19 @@ Item
text: catalog.i18nc("@title:tab", "Materials") text: catalog.i18nc("@title:tab", "Materials")
} }
property var currentItem:
{
var current_index = materialListView.currentIndex;
return materialsModel.getItem(current_index);
}
property var isCurrentItemActivated:
{
const extruder_position = Cura.ExtruderManager.activeExtruderIndex;
const root_material_id = Cura.MachineManager.currentRootMaterialId[extruder_position];
return base.currentItem.root_material_id == root_material_id;
}
Row // Button Row Row // Button Row
{ {
id: buttonRow id: buttonRow
@ -48,12 +61,15 @@ Item
Button { Button {
text: catalog.i18nc("@action:button", "Activate") text: catalog.i18nc("@action:button", "Activate")
iconName: "list-activate" iconName: "list-activate"
//enabled: base.currentItem != null && base.currentItem.id != Cura.MachineManager.activeMaterialId && Cura.MachineManager.hasMaterials enabled: !isCurrentItemActivated
enabled: true // TODO
onClicked: { onClicked: {
forceActiveFocus() forceActiveFocus()
Cura.MachineManager.setActiveMaterial(base.currentItem.id)
currentItem = base.model.getItem(base.objectList.currentIndex) // Refresh the current item. var current_index = materialListView.currentIndex;
var item = materialsModel.getItem(current_index);
const extruder_position = Cura.ExtruderManager.activeExtruderIndex;
Cura.MachineManager.setMaterial(extruder_position, base.currentItem.container_node);
} }
} }
@ -147,7 +163,16 @@ Item
top: parent.top top: parent.top
left: parent.left left: parent.left
} }
text: "TODO" visible: text != ""
text: {
// OLD STUFF
var caption = catalog.i18nc("@action:label", "Printer") + ": " + Cura.MachineManager.activeMachineName;
if (Cura.MachineManager.hasVariants)
{
caption += ", " + Cura.MachineManager.activeDefinitionVariantsName + ": " + Cura.MachineManager.activeVariantName;
}
return caption;
}
width: materialScrollView.width width: materialScrollView.width
elide: Text.ElideRight elide: Text.ElideRight
} }
@ -219,10 +244,10 @@ Item
width: Math.floor((parent.width * 0.3)) width: Math.floor((parent.width * 0.3))
text: model.material text: model.material
elide: Text.ElideRight elide: Text.ElideRight
font.italic: { font.italic: { // TODO: make it easier
const extruder_position = Cura.ExtruderManager.activeExtruderIndex; const extruder_position = Cura.ExtruderManager.activeExtruderIndex;
const root_material_id = Cura.MachineManager.currentRootMaterialId[extruder_position]; const root_material_id = Cura.MachineManager.currentRootMaterialId[extruder_position];
return model.root_material_id == root_material_id; // TODO return model.root_material_id == root_material_id
} }
color: parent.ListView.isCurrentItem ? palette.highlightedText : palette.text; color: parent.ListView.isCurrentItem ? palette.highlightedText : palette.text;
} }
@ -230,10 +255,10 @@ Item
{ {
text: (model.name != model.material) ? model.name : "" text: (model.name != model.material) ? model.name : ""
elide: Text.ElideRight elide: Text.ElideRight
font.italic: { font.italic: { // TODO: make it easier
const extruder_position = Cura.ExtruderManager.activeExtruderIndex; const extruder_position = Cura.ExtruderManager.activeExtruderIndex;
const root_material_id = Cura.MachineManager.currentRootMaterialId[extruder_position]; const root_material_id = Cura.MachineManager.currentRootMaterialId[extruder_position];
return model.root_material_id == root_material_id; // TODO return model.root_material_id == root_material_id;
} }
color: parent.ListView.isCurrentItem ? palette.highlightedText : palette.text; color: parent.ListView.isCurrentItem ? palette.highlightedText : palette.text;
} }
@ -329,7 +354,7 @@ Item
bottom: parent.bottom bottom: parent.bottom
} }
editingEnabled: base.currentItem != null && !base.currentItem.readOnly editingEnabled: base.currentItem != null && !base.currentItem.is_read_only
properties: materialProperties properties: materialProperties
containerId: base.currentItem != null ? base.currentItem.id : "" containerId: base.currentItem != null ? base.currentItem.id : ""