Move ToolbarButton and ToolTip from Cura into Uranium. This makes it possible to use new styled ToolbarButton in plugins/Tools for the rotate tool.

Removed the ContentAlignment enum in ToolTip in favour of using the Text.ContentAlignment enum. For some reason references to this enum fail everywhere when ToolTip is moved into Uranium. There is some evil time-wasting magic cast on this component!

CURA-8943
This commit is contained in:
j.delarago 2022-03-03 15:53:30 +01:00
parent 901dc55733
commit 3c7498feed
18 changed files with 30 additions and 224 deletions

View file

@ -51,7 +51,7 @@ UM.Dialog
onTextChanged: manager.onPeakHeightChanged(text) onTextChanged: manager.onPeakHeightChanged(text)
} }
Cura.ToolTip UM.ToolTip
{ {
text: catalog.i18nc("@info:tooltip", "The maximum distance of each pixel from \"Base.\"") text: catalog.i18nc("@info:tooltip", "The maximum distance of each pixel from \"Base.\"")
visible: peak_height.hovered || peak_height_label.containsMouse visible: peak_height.hovered || peak_height_label.containsMouse
@ -85,7 +85,7 @@ UM.Dialog
onTextChanged: manager.onBaseHeightChanged(text) onTextChanged: manager.onBaseHeightChanged(text)
} }
Cura.ToolTip UM.ToolTip
{ {
text: catalog.i18nc("@info:tooltip", "The base height from the build plate in millimeters.") text: catalog.i18nc("@info:tooltip", "The base height from the build plate in millimeters.")
visible: base_height.hovered || base_height_label.containsMouse visible: base_height.hovered || base_height_label.containsMouse
@ -119,7 +119,7 @@ UM.Dialog
onTextChanged: manager.onWidthChanged(text) onTextChanged: manager.onWidthChanged(text)
} }
Cura.ToolTip UM.ToolTip
{ {
text: catalog.i18nc("@info:tooltip", "The width in millimeters on the build plate") text: catalog.i18nc("@info:tooltip", "The width in millimeters on the build plate")
visible: width.hovered || width_label.containsMouse visible: width.hovered || width_label.containsMouse
@ -153,7 +153,7 @@ UM.Dialog
onTextChanged: manager.onDepthChanged(text) onTextChanged: manager.onDepthChanged(text)
} }
Cura.ToolTip UM.ToolTip
{ {
text: catalog.i18nc("@info:tooltip", "The depth in millimeters on the build plate") text: catalog.i18nc("@info:tooltip", "The depth in millimeters on the build plate")
visible: depth.hovered || depth_label.containsMouse visible: depth.hovered || depth_label.containsMouse
@ -190,7 +190,7 @@ UM.Dialog
onCurrentIndexChanged: { manager.onImageColorInvertChanged(currentIndex) } onCurrentIndexChanged: { manager.onImageColorInvertChanged(currentIndex) }
} }
Cura.ToolTip UM.ToolTip
{ {
text: catalog.i18nc("@info:tooltip", "For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model.") text: catalog.i18nc("@info:tooltip", "For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model.")
visible: lighter_is_higher.hovered || lighter_is_higher_label.containsMouse visible: lighter_is_higher.hovered || lighter_is_higher_label.containsMouse
@ -227,7 +227,7 @@ UM.Dialog
onCurrentIndexChanged: { manager.onColorModelChanged(currentIndex) } onCurrentIndexChanged: { manager.onColorModelChanged(currentIndex) }
} }
Cura.ToolTip UM.ToolTip
{ {
text: catalog.i18nc("@info:tooltip", "For lithophanes a simple logarithmic model for translucency is available. For height maps the pixel values correspond to heights linearly.") text: catalog.i18nc("@info:tooltip", "For lithophanes a simple logarithmic model for translucency is available. For height maps the pixel values correspond to heights linearly.")
visible: color_model.hovered || color_model_label.containsMouse visible: color_model.hovered || color_model_label.containsMouse
@ -258,7 +258,7 @@ UM.Dialog
validator: RegExpValidator { regExp: /^[1-9]\d{0,2}([\,|\.]\d*)?$/ } validator: RegExpValidator { regExp: /^[1-9]\d{0,2}([\,|\.]\d*)?$/ }
onTextChanged: manager.onTransmittanceChanged(text) onTextChanged: manager.onTransmittanceChanged(text)
Cura.ToolTip UM.ToolTip
{ {
text: catalog.i18nc("@info:tooltip", "The percentage of light penetrating a print with a thickness of 1 millimeter. Lowering this value increases the contrast in dark regions and decreases the contrast in light regions of the image.") text: catalog.i18nc("@info:tooltip", "The percentage of light penetrating a print with a thickness of 1 millimeter. Lowering this value increases the contrast in dark regions and decreases the contrast in light regions of the image.")
visible: parent.hovered || transmittance_label.containsMouse visible: parent.hovered || transmittance_label.containsMouse
@ -293,7 +293,7 @@ UM.Dialog
onValueChanged: manager.onSmoothingChanged(value) onValueChanged: manager.onSmoothingChanged(value)
} }
Cura.ToolTip UM.ToolTip
{ {
text: catalog.i18nc("@info:tooltip", "The amount of smoothing to apply to the image.") text: catalog.i18nc("@info:tooltip", "The amount of smoothing to apply to the image.")
visible: smoothing.hovered || smoothing_label.containsMouse visible: smoothing.hovered || smoothing_label.containsMouse

View file

@ -1,7 +1,7 @@
// Copyright (c) 2021 Ultimaker B.V. // Copyright (c) 2021 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher. // Cura is released under the terms of the LGPLv3 or higher.
import UM 1.2 as UM import UM 1.5 as UM
import Cura 1.6 as Cura import Cura 1.6 as Cura
import QtQuick 2.15 import QtQuick 2.15
@ -25,7 +25,7 @@ TabButton
radius: Math.round(width * 0.5) radius: Math.round(width * 0.5)
} }
Cura.ToolTip UM.ToolTip
{ {
id: tooltip id: tooltip

View file

@ -6,7 +6,7 @@ import QtQuick.Controls 2.15
import QtQuick.Layouts 1.3 import QtQuick.Layouts 1.3
import Cura 1.0 as Cura import Cura 1.0 as Cura
import UM 1.0 as UM import UM 1.5 as UM
Item Item
{ {
@ -38,7 +38,7 @@ Item
onClicked: contextStack.pop() //Remove this page, returning to the main package list or whichever thing is beneath it. onClicked: contextStack.pop() //Remove this page, returning to the main package list or whichever thing is beneath it.
tooltip: catalog.i18nc("@button:tooltip", "Back") tooltip: catalog.i18nc("@button:tooltip", "Back")
toolTipContentAlignment: Cura.ToolTip.ContentAlignment.AlignRight toolTipContentAlignment: Text.AlignRight
leftPadding: UM.Theme.getSize("narrow_margin").width leftPadding: UM.Theme.getSize("narrow_margin").width
rightPadding: leftPadding rightPadding: leftPadding
iconSource: UM.Theme.getIcon("ArrowLeft") iconSource: UM.Theme.getIcon("ArrowLeft")

View file

@ -12,7 +12,7 @@ Control
implicitWidth: UM.Theme.getSize("card_tiny_icon").width implicitWidth: UM.Theme.getSize("card_tiny_icon").width
implicitHeight: UM.Theme.getSize("card_tiny_icon").height implicitHeight: UM.Theme.getSize("card_tiny_icon").height
Cura.ToolTip UM.ToolTip
{ {
tooltipText: tooltipText:
{ {

View file

@ -75,7 +75,7 @@ Item
id: meshTypeButtons id: meshTypeButtons
spacing: UM.Theme.getSize("default_margin").width spacing: UM.Theme.getSize("default_margin").width
Cura.ToolbarButton UM.ToolbarButton
{ {
id: normalButton id: normalButton
text: catalog.i18nc("@label", "Normal model") text: catalog.i18nc("@label", "Normal model")
@ -90,7 +90,7 @@ Item
z: 4 z: 4
} }
Cura.ToolbarButton UM.ToolbarButton
{ {
id: supportMeshButton id: supportMeshButton
text: catalog.i18nc("@label", "Print as support") text: catalog.i18nc("@label", "Print as support")
@ -105,7 +105,7 @@ Item
z: 3 z: 3
} }
Cura.ToolbarButton UM.ToolbarButton
{ {
id: overlapMeshButton id: overlapMeshButton
text: catalog.i18nc("@label", "Modify settings for overlaps") text: catalog.i18nc("@label", "Modify settings for overlaps")
@ -120,7 +120,7 @@ Item
z: 2 z: 2
} }
Cura.ToolbarButton UM.ToolbarButton
{ {
id: antiOverhangMeshButton id: antiOverhangMeshButton
text: catalog.i18nc("@label", "Don't support overlaps") text: catalog.i18nc("@label", "Don't support overlaps")

View file

@ -479,7 +479,7 @@ UM.Dialog
} }
return tipText return tipText
} }
toolTipContentAlignment: Cura.ToolTip.ContentAlignment.AlignLeft toolTipContentAlignment: Text.AlignLeft
onClicked: dialog.show() onClicked: dialog.show()
iconSource: "Script.svg" iconSource: "Script.svg"
fixedWidthMode: false fixedWidthMode: false

View file

@ -179,7 +179,7 @@ Button
cornerSide: Cura.RoundedRectangle.Direction.None cornerSide: Cura.RoundedRectangle.Direction.None
} }
Cura.ToolTip UM.ToolTip
{ {
id: tooltip id: tooltip
visible: visible:

View file

@ -5,7 +5,7 @@ import QtQuick 2.7
import QtQuick.Controls 2.1 import QtQuick.Controls 2.1
import QtQuick.Layouts 1.3 import QtQuick.Layouts 1.3
import UM 1.1 as UM import UM 1.5 as UM
import Cura 1.0 as Cura import Cura 1.0 as Cura
@ -128,7 +128,7 @@ Column
tooltip: text tooltip: text
fixedWidthMode: true fixedWidthMode: true
toolTipContentAlignment: Cura.ToolTip.ContentAlignment.AlignLeft toolTipContentAlignment: Text.AlignLeft
onClicked: UM.Controller.setActiveStage("PreviewStage") onClicked: UM.Controller.setActiveStage("PreviewStage")
} }

View file

@ -31,7 +31,7 @@ Button
border.width: UM.Theme.getSize("default_lining").width border.width: UM.Theme.getSize("default_lining").width
} }
Cura.ToolTip UM.ToolTip
{ {
id: tooltip id: tooltip
tooltipText: base.text tooltipText: base.text

View file

@ -4,10 +4,10 @@
import QtQuick 2.2 import QtQuick 2.2
import QtQuick.Controls 2.0 import QtQuick.Controls 2.0
import UM 1.2 as UM import UM 1.5 as UM
import Cura 1.0 as Cura import Cura 1.0 as Cura
Cura.ToolbarButton UM.ToolbarButton
{ {
id: base id: base

View file

@ -83,7 +83,7 @@ Cura.ExpandablePopup
onExited: { tooltip.hide() } onExited: { tooltip.hide() }
} }
Cura.ToolTip UM.ToolTip
{ {
id: tooltip id: tooltip
x: 0 x: 0

View file

@ -188,7 +188,7 @@ Button
elideWidth: buttonText.width elideWidth: buttonText.width
} }
Cura.ToolTip UM.ToolTip
{ {
id: tooltip id: tooltip
tooltipText: objectItemButton.text + perObjectSettingsInfo.tooltipText tooltipText: objectItemButton.text + perObjectSettingsInfo.tooltipText

View file

@ -19,7 +19,7 @@ ToolButton
property bool valueError: false; property bool valueError: false;
property bool valueWarning: false; property bool valueWarning: false;
Cura.ToolTip UM.ToolTip
{ {
id: tooltip id: tooltip
visible: base.hovered visible: base.hovered

View file

@ -172,7 +172,7 @@ Cura.ExpandablePopup
onExited: { tooltip.hide() } onExited: { tooltip.hide() }
} }
Cura.ToolTip UM.ToolTip
{ {
id: tooltip id: tooltip

View file

@ -1,82 +0,0 @@
// 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.5 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: label.contentHeight + 2 * UM.Theme.getSize("thin_margin").width
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: UM.Label
{
id: label
text: tooltip.text
font: tooltip.font
wrapMode: Text.Wrap
textFormat: Text.RichText
color: UM.Theme.getColor("tooltip_text")
}
function show() {
opacity = text != "" ? 1 : 0
}
function hide() {
opacity = 0
}
}

View file

@ -4,7 +4,7 @@
import QtQuick 2.2 import QtQuick 2.2
import QtQuick.Controls 2.3 import QtQuick.Controls 2.3
import UM 1.2 as UM import UM 1.5 as UM
import Cura 1.0 as Cura import Cura 1.0 as Cura
Item Item
@ -53,7 +53,7 @@ Item
width: childrenRect.width width: childrenRect.width
height: childrenRect.height height: childrenRect.height
delegate: ToolbarButton delegate: UM.ToolbarButton
{ {
text: model.name + (model.shortcut ? (" (" + model.shortcut + ")") : "") text: model.name + (model.shortcut ? (" (" + model.shortcut + ")") : "")
checkable: true checkable: true

View file

@ -1,110 +0,0 @@
// 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.2 as UM
import Cura 1.0 as Cura
Button
{
id: base
property alias toolItem: contentItemLoader.sourceComponent
// These two properties indicate whether the toolbar button is at the top of the toolbar column or at the bottom.
// If it is somewhere in the middle, then both has to be false. If there is only one element in the column, then
// both properties have to be set to true. This is used to create a rounded corner.
property bool isTopElement: false
property bool isBottomElement: false
hoverEnabled: true
background: Rectangle
{
implicitWidth: UM.Theme.getSize("button").width
implicitHeight: UM.Theme.getSize("button").height
color: UM.Theme.getColor("toolbar_background")
radius: UM.Theme.getSize("default_radius").width
Rectangle
{
id: topSquare
anchors
{
left: parent.left
right: parent.right
top: parent.top
}
height: parent.radius
color: parent.color
visible: !base.isTopElement
}
Rectangle
{
id: bottomSquare
anchors
{
left: parent.left
right: parent.right
bottom: parent.bottom
}
height: parent.radius
color: parent.color
visible: !base.isBottomElement
}
Rectangle
{
id: leftSquare
anchors
{
left: parent.left
top: parent.top
bottom: parent.bottom
}
width: parent.radius
color: parent.color
}
}
contentItem: Rectangle
{
opacity: parent.enabled ? 1.0 : 0.2
implicitWidth: Math.round(UM.Theme.getSize("button").width * 0.75)
implicitHeight: Math.round(UM.Theme.getSize("button").height * 0.75)
radius: Math.round(width * 0.5)
color:
{
if (base.checked && base.hovered)
{
return UM.Theme.getColor("toolbar_button_active_hover")
}
else if (base.checked)
{
return UM.Theme.getColor("toolbar_button_active")
}
else if(base.hovered)
{
return UM.Theme.getColor("toolbar_button_hover")
}
return UM.Theme.getColor("toolbar_background")
}
Loader
{
id: contentItemLoader
anchors.centerIn: parent
width: Math.round(UM.Theme.getSize("button").width / 2)
height: Math.round(UM.Theme.getSize("button").height / 2)
}
}
Cura.ToolTip
{
id: tooltip
tooltipText: base.text
visible: base.hovered
}
}

View file

@ -14,10 +14,8 @@ OutputDevicesActionButton 1.0 OutputDevicesActionButton.qml
ExpandableComponent 1.0 ExpandableComponent.qml ExpandableComponent 1.0 ExpandableComponent.qml
PrinterTypeLabel 1.0 PrinterTypeLabel.qml PrinterTypeLabel 1.0 PrinterTypeLabel.qml
ViewsSelector 1.0 ViewsSelector.qml ViewsSelector 1.0 ViewsSelector.qml
ToolbarButton 1.0 ToolbarButton.qml
SettingView 1.0 SettingView.qml SettingView 1.0 SettingView.qml
ProfileMenu 1.0 ProfileMenu.qml ProfileMenu 1.0 ProfileMenu.qml
ToolTip 1.0 ToolTip.qml
# Cura/WelcomePages # Cura/WelcomePages