ExtruderButton.qml 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // Copyright (c) 2017 Ultimaker B.V.
  2. // Cura is released under the terms of the LGPLv3 or higher.
  3. import QtQuick 2.2
  4. import QtQuick.Controls 1.1
  5. import UM 1.2 as UM
  6. import Cura 1.0 as Cura
  7. Button
  8. {
  9. id: base
  10. property var extruder;
  11. text: catalog.i18ncp("@label %1 is filled in with the name of an extruder", "Print Selected Model with %1", "Print Selected Models with %1", UM.Selection.selectionCount).arg(extruder.name)
  12. style: UM.Theme.styles.toolbar_button
  13. iconSource: UM.Theme.getIcon("extruder_button")
  14. checked: Cura.ExtruderManager.selectedObjectExtruders.indexOf(extruder.id) != -1
  15. enabled: UM.Selection.hasSelection && extruder.stack.isEnabled
  16. property bool isFirstElement: extrudersModel.getItem(0).name == model.name
  17. property bool isLastElement: extrudersModel.getItem(extrudersModel.rowCount() - 1).name == model.name
  18. Item
  19. {
  20. anchors.centerIn: parent
  21. width: UM.Theme.getSize("default_margin").width
  22. height: UM.Theme.getSize("default_margin").height
  23. opacity: !base.enabled ? 0.2 : 1.0
  24. Label
  25. {
  26. anchors.centerIn: parent
  27. text: index + 1
  28. color: UM.Theme.getColor("toolbar_button_text")
  29. font: UM.Theme.getFont("default_bold")
  30. }
  31. }
  32. // Material colour circle
  33. // Only draw the filling colour of the material inside the SVG border.
  34. Rectangle
  35. {
  36. anchors
  37. {
  38. right: parent.right
  39. top: parent.top
  40. rightMargin: UM.Theme.getSize("extruder_button_material_margin").width
  41. topMargin: UM.Theme.getSize("extruder_button_material_margin").height
  42. }
  43. color: model.color
  44. width: UM.Theme.getSize("extruder_button_material").width
  45. height: UM.Theme.getSize("extruder_button_material").height
  46. radius: Math.round(width / 2)
  47. border.width: UM.Theme.getSize("default_lining").width
  48. border.color: UM.Theme.getColor("extruder_button_material_border")
  49. opacity: !base.enabled ? 0.2 : 1.0
  50. }
  51. onClicked:
  52. {
  53. forceActiveFocus() //First grab focus, so all the text fields are updated
  54. CuraActions.setExtruderForSelection(extruder.id);
  55. }
  56. }