MachineSelectorButton.qml 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. // Copyright (c) 2018 Ultimaker B.V.
  2. // Cura is released under the terms of the LGPLv3 or higher.
  3. import QtQuick 2.7
  4. import QtQuick.Controls 2.1
  5. import QtQuick.Layouts 1.3
  6. import UM 1.1 as UM
  7. import Cura 1.0 as Cura
  8. Button
  9. {
  10. id: machineSelectorButton
  11. width: parent.width
  12. height: UM.Theme.getSize("action_button").height
  13. leftPadding: Math.round(1.5 * UM.Theme.getSize("default_margin").width)
  14. checkable: true
  15. property var outputDevice: Cura.MachineManager.printerOutputDevices[0]
  16. property var printerTypesList: []
  17. function setPrinterTypesList()
  18. {
  19. printerTypesList = (checked && (outputDevice != null)) ? outputDevice.uniquePrinterTypes : []
  20. }
  21. contentItem: Item
  22. {
  23. width: machineSelectorButton.width - machineSelectorButton.leftPadding
  24. height: UM.Theme.getSize("action_button").height
  25. Label
  26. {
  27. id: buttonText
  28. anchors
  29. {
  30. left: parent.left
  31. right: printerTypes.left
  32. verticalCenter: parent.verticalCenter
  33. }
  34. text: machineSelectorButton.text
  35. color: UM.Theme.getColor("text")
  36. font: UM.Theme.getFont("action_button")
  37. visible: text != ""
  38. renderType: Text.NativeRendering
  39. verticalAlignment: Text.AlignVCenter
  40. elide: Text.ElideRight
  41. }
  42. Row
  43. {
  44. id: printerTypes
  45. width: childrenRect.width
  46. anchors
  47. {
  48. right: parent.right
  49. verticalCenter: parent.verticalCenter
  50. }
  51. spacing: UM.Theme.getSize("narrow_margin").width
  52. Repeater
  53. {
  54. model: printerTypesList
  55. delegate: Label
  56. {
  57. text: modelData
  58. }
  59. }
  60. }
  61. }
  62. background: Rectangle
  63. {
  64. id: backgroundRect
  65. color: machineSelectorButton.hovered ? UM.Theme.getColor("action_button_hovered") : "transparent"
  66. radius: UM.Theme.getSize("action_button_radius").width
  67. border.width: UM.Theme.getSize("default_lining").width
  68. border.color: machineSelectorButton.checked ? UM.Theme.getColor("primary") : "transparent"
  69. }
  70. onClicked:
  71. {
  72. togglePopup()
  73. Cura.MachineManager.setActiveMachine(model.id)
  74. }
  75. MouseArea
  76. {
  77. id: mouseArea
  78. anchors.fill: parent
  79. onPressed: mouse.accepted = false
  80. hoverEnabled: true
  81. }
  82. Connections
  83. {
  84. target: outputDevice
  85. onUniqueConfigurationsChanged: setPrinterTypesList()
  86. }
  87. Connections
  88. {
  89. target: Cura.MachineManager
  90. onOutputDevicesChanged: setPrinterTypesList()
  91. }
  92. Component.onCompleted: setPrinterTypesList()
  93. }