mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-24 06:39:38 +08:00
82 lines
2.1 KiB
QML
82 lines
2.1 KiB
QML
// 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
|
|
}
|
|
|
|
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
|
|
}
|
|
} |