LayerView.qml 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. // Copyright (c) 2015 Ultimaker B.V.
  2. // Cura is released under the terms of the AGPLv3 or higher.
  3. import QtQuick 2.2
  4. import QtQuick.Controls 1.2
  5. import QtQuick.Layouts 1.1
  6. import QtQuick.Controls.Styles 1.1
  7. import UM 1.0 as UM
  8. Item
  9. {
  10. width: UM.Theme.getSize("button").width
  11. height: UM.Theme.getSize("slider_layerview_size").height
  12. Slider
  13. {
  14. id: slider
  15. width: UM.Theme.getSize("slider_layerview_size").width
  16. height: UM.Theme.getSize("slider_layerview_size").height
  17. anchors.left: parent.left
  18. anchors.leftMargin: UM.Theme.getSize("slider_layerview_margin").width/2
  19. orientation: Qt.Vertical
  20. minimumValue: 0;
  21. maximumValue: UM.LayerView.numLayers;
  22. stepSize: 1
  23. property real pixelsPerStep: ((height - UM.Theme.getSize("slider_handle").height) / (maximumValue - minimumValue)) * stepSize;
  24. value: UM.LayerView.currentLayer
  25. onValueChanged: UM.LayerView.setCurrentLayer(value)
  26. style: UM.Theme.styles.slider;
  27. Rectangle
  28. {
  29. x: parent.width + UM.Theme.getSize("slider_layerview_background").width / 2;
  30. y: parent.height - (parent.value * parent.pixelsPerStep) - UM.Theme.getSize("slider_handle").height * 1.25;
  31. height: UM.Theme.getSize("slider_handle").height + UM.Theme.getSize("default_margin").height
  32. width: valueLabel.width + UM.Theme.getSize("default_margin").width
  33. Behavior on height { NumberAnimation { duration: 50; } }
  34. border.width: UM.Theme.getSize("default_lining").width;
  35. border.color: UM.Theme.getColor("slider_groove_border");
  36. visible: UM.LayerView.getLayerActivity && Printer.getPlatformActivity ? true : false
  37. TextField
  38. {
  39. id: valueLabel
  40. property string maxValue: slider.maximumValue + 1
  41. text: slider.value + 1
  42. horizontalAlignment: TextInput.AlignRight;
  43. onEditingFinished:
  44. {
  45. if(valueLabel.text != '')
  46. {
  47. slider.value = valueLabel.text - 1
  48. }
  49. }
  50. validator: IntValidator { bottom: 1; top: slider.maximumValue + 1; }
  51. anchors.left: parent.left;
  52. anchors.leftMargin: UM.Theme.getSize("default_margin").width / 2;
  53. anchors.verticalCenter: parent.verticalCenter;
  54. width: UM.Theme.getSize("line").width * maxValue.length;
  55. style: TextFieldStyle
  56. {
  57. textColor: UM.Theme.getColor("setting_control_text");
  58. font: UM.Theme.getFont("default");
  59. background: Item { }
  60. }
  61. }
  62. BusyIndicator
  63. {
  64. id: busyIndicator;
  65. anchors.left: parent.right;
  66. anchors.leftMargin: UM.Theme.getSize("default_margin").width / 2;
  67. anchors.verticalCenter: parent.verticalCenter;
  68. width: UM.Theme.getSize("slider_handle").height;
  69. height: width;
  70. running: UM.LayerView.busy;
  71. visible: UM.LayerView.busy;
  72. }
  73. }
  74. }
  75. Rectangle {
  76. anchors.left: parent.left
  77. anchors.verticalCenter: parent.verticalCenter
  78. z: slider.z - 1
  79. width: UM.Theme.getSize("slider_layerview_background").width
  80. height: slider.height + UM.Theme.getSize("default_margin").height * 2
  81. color: UM.Theme.getColor("tool_panel_background");
  82. border.width: UM.Theme.getSize("default_lining").width
  83. border.color: UM.Theme.getColor("lining")
  84. MouseArea {
  85. id: sliderMouseArea
  86. property double manualStepSize: slider.maximumValue / 11
  87. anchors.fill: parent
  88. onWheel: {
  89. slider.value = wheel.angleDelta.y < 0 ? slider.value - sliderMouseArea.manualStepSize : slider.value + sliderMouseArea.manualStepSize
  90. }
  91. }
  92. }
  93. }