mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-01 00:04:27 +08:00

Toolbox crashes on Mac OS X due to reaching the max limit of file handlers. This seems to be caused by the loading the "loading.gif" animation image. Probably because many widgets are created and each of them has an animation image, and Qt (5.8?) seems to load everything at the same time.
161 lines
4.6 KiB
QML
161 lines
4.6 KiB
QML
// Copyright (c) 2018 Ultimaker B.V.
|
|
// Toolbox is released under the terms of the LGPLv3 or higher.
|
|
|
|
import QtQuick 2.2
|
|
import QtQuick.Controls 1.4
|
|
import QtQuick.Controls.Styles 1.4
|
|
import UM 1.1 as UM
|
|
|
|
|
|
Item
|
|
{
|
|
id: base
|
|
|
|
property var active: false
|
|
property var complete: false
|
|
|
|
property var readyLabel: catalog.i18nc("@action:button", "Install")
|
|
property var activeLabel: catalog.i18nc("@action:button", "Cancel")
|
|
property var completeLabel: catalog.i18nc("@action:button", "Installed")
|
|
|
|
property var readyAction: null // Action when button is ready and clicked (likely install)
|
|
property var activeAction: null // Action when button is active and clicked (likely cancel)
|
|
property var completeAction: null // Action when button is complete and clicked (likely go to installed)
|
|
|
|
width: UM.Theme.getSize("toolbox_action_button").width
|
|
height: UM.Theme.getSize("toolbox_action_button").height
|
|
|
|
Button
|
|
{
|
|
id: button
|
|
text:
|
|
{
|
|
if (complete)
|
|
{
|
|
return completeLabel
|
|
}
|
|
else if (active)
|
|
{
|
|
return activeLabel
|
|
}
|
|
else
|
|
{
|
|
return readyLabel
|
|
}
|
|
}
|
|
onClicked:
|
|
{
|
|
if (complete)
|
|
{
|
|
return completeAction()
|
|
}
|
|
else if (active)
|
|
{
|
|
return activeAction()
|
|
}
|
|
else
|
|
{
|
|
return readyAction()
|
|
}
|
|
}
|
|
style: ButtonStyle
|
|
{
|
|
background: Rectangle
|
|
{
|
|
implicitWidth: UM.Theme.getSize("toolbox_action_button").width
|
|
implicitHeight: UM.Theme.getSize("toolbox_action_button").height
|
|
color:
|
|
{
|
|
if (base.complete)
|
|
{
|
|
return "transparent"
|
|
}
|
|
else
|
|
{
|
|
if (control.hovered)
|
|
{
|
|
return UM.Theme.getColor("primary_hover")
|
|
}
|
|
else
|
|
{
|
|
return UM.Theme.getColor("primary")
|
|
}
|
|
}
|
|
}
|
|
border
|
|
{
|
|
width:
|
|
{
|
|
if (base.complete)
|
|
{
|
|
UM.Theme.getSize("default_lining").width
|
|
}
|
|
else
|
|
{
|
|
return 0
|
|
}
|
|
}
|
|
color:
|
|
{
|
|
if (control.hovered)
|
|
{
|
|
return UM.Theme.getColor("primary_hover")
|
|
}
|
|
else
|
|
{
|
|
return UM.Theme.getColor("lining")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
label: Label
|
|
{
|
|
text: control.text
|
|
color:
|
|
{
|
|
if (base.complete)
|
|
{
|
|
return UM.Theme.getColor("text")
|
|
}
|
|
else
|
|
{
|
|
if (control.hovered)
|
|
{
|
|
return UM.Theme.getColor("button_text_hover")
|
|
}
|
|
else
|
|
{
|
|
return UM.Theme.getColor("button_text")
|
|
}
|
|
}
|
|
}
|
|
verticalAlignment: Text.AlignVCenter
|
|
horizontalAlignment: Text.AlignHCenter
|
|
font:
|
|
{
|
|
if (base.complete)
|
|
{
|
|
return UM.Theme.getFont("default")
|
|
}
|
|
else
|
|
{
|
|
return UM.Theme.getFont("default_bold")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
AnimatedImage
|
|
{
|
|
id: loader
|
|
visible: active
|
|
source: visible ? "../images/loading.gif" : ""
|
|
width: UM.Theme.getSize("toolbox_loader").width
|
|
height: UM.Theme.getSize("toolbox_loader").height
|
|
anchors.right: button.left
|
|
anchors.rightMargin: UM.Theme.getSize("default_margin").width
|
|
anchors.verticalCenter: button.verticalCenter
|
|
}
|
|
}
|