MachineSelectorButton.qml 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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 UM 1.1 as UM
  6. import Cura 1.0 as Cura
  7. Button
  8. {
  9. id: machineSelectorButton
  10. width: parent.width
  11. height: UM.Theme.getSize("action_button").height
  12. leftPadding: UM.Theme.getSize("thick_margin").width
  13. rightPadding: UM.Theme.getSize("thick_margin").width
  14. checkable: true
  15. hoverEnabled: true
  16. property var outputDevice: null
  17. property var printerTypesList: []
  18. function updatePrinterTypesList()
  19. {
  20. printerTypesList = (checked && (outputDevice != null)) ? outputDevice.uniquePrinterTypes : []
  21. }
  22. contentItem: Item
  23. {
  24. width: machineSelectorButton.width - machineSelectorButton.leftPadding
  25. height: UM.Theme.getSize("action_button").height
  26. Label
  27. {
  28. id: buttonText
  29. anchors
  30. {
  31. left: parent.left
  32. right: printerTypes.left
  33. verticalCenter: parent.verticalCenter
  34. }
  35. text: machineSelectorButton.text
  36. color: UM.Theme.getColor("text")
  37. font: UM.Theme.getFont("medium")
  38. visible: text != ""
  39. renderType: Text.NativeRendering
  40. verticalAlignment: Text.AlignVCenter
  41. elide: Text.ElideRight
  42. }
  43. Row
  44. {
  45. id: printerTypes
  46. width: childrenRect.width
  47. anchors
  48. {
  49. right: parent.right
  50. verticalCenter: parent.verticalCenter
  51. }
  52. spacing: UM.Theme.getSize("narrow_margin").width
  53. Repeater
  54. {
  55. model: printerTypesList
  56. delegate: Cura.PrinterTypeLabel
  57. {
  58. text: Cura.MachineManager.getAbbreviatedMachineName(modelData)
  59. }
  60. }
  61. }
  62. }
  63. background: Rectangle
  64. {
  65. id: backgroundRect
  66. color: machineSelectorButton.hovered ? UM.Theme.getColor("action_button_hovered") : "transparent"
  67. radius: UM.Theme.getSize("action_button_radius").width
  68. border.width: UM.Theme.getSize("default_lining").width
  69. border.color: machineSelectorButton.checked ? UM.Theme.getColor("primary") : "transparent"
  70. }
  71. onClicked:
  72. {
  73. toggleContent()
  74. Cura.MachineManager.setActiveMachine(model.id)
  75. }
  76. Connections
  77. {
  78. target: outputDevice
  79. onUniqueConfigurationsChanged: updatePrinterTypesList()
  80. }
  81. Connections
  82. {
  83. target: Cura.MachineManager
  84. onOutputDevicesChanged: updatePrinterTypesList()
  85. }
  86. Component.onCompleted: updatePrinterTypesList()
  87. }