1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- // Copyright (c) 2018 Ultimaker B.V.
- // Cura is released under the terms of the LGPLv3 or higher.
- import QtQuick 2.7
- import QtQuick.Controls 2.3
- import UM 1.0 as UM
- import Cura 1.0 as Cura
- ToolTip
- {
- enum ContentAlignment
- {
- AlignLeft,
- AlignRight
- }
- // Defines the alignment of the content, by default to the left
- property int contentAlignment: Cura.ToolTip.ContentAlignment.AlignRight
- property alias tooltipText: tooltip.text
- property alias arrowSize: backgroundRect.arrowSize
- property var targetPoint: Qt.point(parent.x, y + Math.round(height/2))
- id: tooltip
- text: ""
- delay: 500
- font: UM.Theme.getFont("default")
- visible: opacity != 0.0
- opacity: 0.0 // initially hidden
- Behavior on opacity
- {
- NumberAnimation { duration: 100; }
- }
- onAboutToShow: show()
- onAboutToHide: hide()
- // If the text is not set, just set the height to 0 to prevent it from showing
- height: text != "" ? label.contentHeight + 2 * UM.Theme.getSize("thin_margin").width: 0
- x:
- {
- if (contentAlignment == Cura.ToolTip.ContentAlignment.AlignLeft)
- {
- return (label.width + Math.round(UM.Theme.getSize("default_arrow").width * 1.2) + padding * 2) * -1
- }
- return parent.width + Math.round(UM.Theme.getSize("default_arrow").width * 1.2 + padding)
- }
- y: Math.round(parent.height / 2 - label.height / 2 ) - padding
- padding: UM.Theme.getSize("thin_margin").width
- background: UM.PointingRectangle
- {
- id: backgroundRect
- color: UM.Theme.getColor("tooltip")
- target: Qt.point(targetPoint.x - tooltip.x, targetPoint.y - tooltip.y)
- arrowSize: UM.Theme.getSize("default_arrow").width
- visible: tooltip.height != 0
- }
- contentItem: Label
- {
- id: label
- text: tooltip.text
- font: tooltip.font
- wrapMode: Text.Wrap
- textFormat: Text.RichText
- color: UM.Theme.getColor("tooltip_text")
- renderType: Text.NativeRendering
- }
- function show() {
- opacity = 1
- }
- function hide() {
- opacity = 0
- }
- }
|