mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-12-11 07:48:53 -07:00
Merge branch '4.0'
This commit is contained in:
commit
c6da824203
72 changed files with 1910 additions and 555 deletions
|
|
@ -4,6 +4,7 @@
|
|||
import QtQuick 2.7
|
||||
import QtQuick.Controls 2.1
|
||||
import QtGraphicalEffects 1.0 // For the dropshadow
|
||||
|
||||
import UM 1.1 as UM
|
||||
import Cura 1.0 as Cura
|
||||
|
||||
|
|
@ -30,6 +31,7 @@ Button
|
|||
property color outlineDisabledColor: outlineColor
|
||||
property alias shadowColor: shadow.color
|
||||
property alias shadowEnabled: shadow.visible
|
||||
property alias busy: busyIndicator.visible
|
||||
|
||||
property alias toolTipContentAlignment: tooltip.contentAlignment
|
||||
|
||||
|
|
@ -55,7 +57,7 @@ Button
|
|||
width: visible ? height : 0
|
||||
sourceSize.width: width
|
||||
sourceSize.height: height
|
||||
color: button.hovered ? button.textHoverColor : button.textColor
|
||||
color: button.enabled ? (button.hovered ? button.textHoverColor : button.textColor) : button.textDisabledColor
|
||||
visible: source != "" && !button.isIconOnRightSide
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
|
@ -117,4 +119,16 @@ Button
|
|||
id: tooltip
|
||||
visible: button.hovered
|
||||
}
|
||||
|
||||
BusyIndicator
|
||||
{
|
||||
id: busyIndicator
|
||||
|
||||
anchors.centerIn: parent
|
||||
|
||||
width: height
|
||||
height: parent.height
|
||||
|
||||
visible: false
|
||||
}
|
||||
}
|
||||
|
|
@ -31,6 +31,13 @@ Column
|
|||
id: information
|
||||
width: parent.width
|
||||
height: childrenRect.height
|
||||
|
||||
PrintInformationWidget
|
||||
{
|
||||
id: printInformationPanel
|
||||
visible: !preSlicedData
|
||||
anchors.right: parent.right
|
||||
}
|
||||
|
||||
Column
|
||||
{
|
||||
|
|
@ -50,15 +57,7 @@ Column
|
|||
|
||||
text: preSlicedData ? catalog.i18nc("@label", "No time estimation available") : PrintInformation.currentPrintTime.getDisplayString(UM.DurationFormat.Long)
|
||||
source: UM.Theme.getIcon("clock")
|
||||
font: UM.Theme.getFont("large_bold")
|
||||
|
||||
PrintInformationWidget
|
||||
{
|
||||
id: printInformationPanel
|
||||
visible: !preSlicedData
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: parent.contentWidth + UM.Theme.getSize("default_margin").width
|
||||
}
|
||||
font: UM.Theme.getFont("medium_bold")
|
||||
}
|
||||
|
||||
Cura.IconWithText
|
||||
|
|
@ -91,43 +90,8 @@ Column
|
|||
return totalWeights + "g · " + totalLengths.toFixed(2) + "m"
|
||||
}
|
||||
source: UM.Theme.getIcon("spool")
|
||||
|
||||
Item
|
||||
{
|
||||
id: additionalComponents
|
||||
width: childrenRect.width
|
||||
anchors.right: parent.right
|
||||
height: parent.height
|
||||
Row
|
||||
{
|
||||
id: additionalComponentsRow
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
spacing: UM.Theme.getSize("default_margin").width
|
||||
}
|
||||
}
|
||||
Component.onCompleted: addAdditionalComponents("saveButton")
|
||||
|
||||
Connections
|
||||
{
|
||||
target: CuraApplication
|
||||
onAdditionalComponentsChanged: addAdditionalComponents("saveButton")
|
||||
}
|
||||
|
||||
function addAdditionalComponents (areaId)
|
||||
{
|
||||
if(areaId == "saveButton")
|
||||
{
|
||||
for (var component in CuraApplication.additionalComponents["saveButton"])
|
||||
{
|
||||
CuraApplication.additionalComponents["saveButton"][component].parent = additionalComponentsRow
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Item
|
||||
|
|
|
|||
|
|
@ -110,8 +110,7 @@ Column
|
|||
|
||||
height: parent.height
|
||||
|
||||
anchors.right: additionalComponents.left
|
||||
anchors.rightMargin: additionalComponents.width != 0 ? UM.Theme.getSize("default_margin").width : 0
|
||||
anchors.right: parent.right
|
||||
anchors.left: parent.left
|
||||
|
||||
text: catalog.i18nc("@button", "Slice")
|
||||
|
|
@ -128,45 +127,12 @@ Column
|
|||
height: parent.height
|
||||
anchors.left: parent.left
|
||||
|
||||
anchors.right: additionalComponents.left
|
||||
anchors.rightMargin: additionalComponents.width != 0 ? UM.Theme.getSize("default_margin").width : 0
|
||||
anchors.right: parent.right
|
||||
text: catalog.i18nc("@button", "Cancel")
|
||||
enabled: sliceButton.enabled
|
||||
visible: !sliceButton.visible
|
||||
onClicked: sliceOrStopSlicing()
|
||||
}
|
||||
|
||||
Item
|
||||
{
|
||||
id: additionalComponents
|
||||
width: childrenRect.width
|
||||
anchors.right: parent.right
|
||||
height: parent.height
|
||||
Row
|
||||
{
|
||||
id: additionalComponentsRow
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: UM.Theme.getSize("default_margin").width
|
||||
}
|
||||
}
|
||||
Component.onCompleted: prepareButtons.addAdditionalComponents("saveButton")
|
||||
|
||||
Connections
|
||||
{
|
||||
target: CuraApplication
|
||||
onAdditionalComponentsChanged: prepareButtons.addAdditionalComponents("saveButton")
|
||||
}
|
||||
|
||||
function addAdditionalComponents (areaId)
|
||||
{
|
||||
if(areaId == "saveButton")
|
||||
{
|
||||
for (var component in CuraApplication.additionalComponents["saveButton"])
|
||||
{
|
||||
CuraApplication.additionalComponents["saveButton"][component].parent = additionalComponentsRow
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -194,7 +160,7 @@ Column
|
|||
shortcut: "Ctrl+P"
|
||||
onTriggered:
|
||||
{
|
||||
if (prepareButton.enabled)
|
||||
if (sliceButton.enabled)
|
||||
{
|
||||
sliceOrStopSlicing()
|
||||
}
|
||||
|
|
|
|||
63
resources/qml/CheckBoxWithTooltip.qml
Normal file
63
resources/qml/CheckBoxWithTooltip.qml
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
// 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.1
|
||||
|
||||
import UM 1.3 as UM
|
||||
|
||||
CheckBox
|
||||
{
|
||||
id: checkbox
|
||||
hoverEnabled: true
|
||||
|
||||
property alias tooltip: tooltip.text
|
||||
|
||||
indicator: Rectangle
|
||||
{
|
||||
implicitWidth: UM.Theme.getSize("checkbox").width
|
||||
implicitHeight: UM.Theme.getSize("checkbox").height
|
||||
x: 0
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
color: UM.Theme.getColor("main_background")
|
||||
radius: UM.Theme.getSize("checkbox_radius").width
|
||||
border.width: UM.Theme.getSize("default_lining").width
|
||||
border.color: checkbox.hovered ? UM.Theme.getColor("checkbox_border_hover") : UM.Theme.getColor("checkbox_border")
|
||||
|
||||
UM.RecolorImage
|
||||
{
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
width: Math.round(parent.width / 2.5)
|
||||
height: Math.round(parent.height / 2.5)
|
||||
sourceSize.height: width
|
||||
color: UM.Theme.getColor("checkbox_mark")
|
||||
source: UM.Theme.getIcon("check")
|
||||
opacity: checkbox.checked
|
||||
Behavior on opacity { NumberAnimation { duration: 100; } }
|
||||
}
|
||||
}
|
||||
|
||||
contentItem: Label
|
||||
{
|
||||
anchors
|
||||
{
|
||||
left: checkbox.indicator.right
|
||||
leftMargin: UM.Theme.getSize("narrow_margin").width
|
||||
}
|
||||
text: checkbox.text
|
||||
color: UM.Theme.getColor("checkbox_text")
|
||||
font: UM.Theme.getFont("default")
|
||||
renderType: Text.NativeRendering
|
||||
elide: Text.ElideRight
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
ToolTip
|
||||
{
|
||||
id: tooltip
|
||||
text: ""
|
||||
delay: 500
|
||||
visible: text != "" && checkbox.hovered
|
||||
}
|
||||
}
|
||||
|
|
@ -124,16 +124,16 @@ UM.MainWindow
|
|||
}
|
||||
}
|
||||
|
||||
// This is a placehoder for adding a pattern in the header
|
||||
Image
|
||||
{
|
||||
id: backgroundPattern
|
||||
anchors.fill: parent
|
||||
fillMode: Image.Tile
|
||||
source: UM.Theme.getImage("header_pattern")
|
||||
horizontalAlignment: Image.AlignLeft
|
||||
verticalAlignment: Image.AlignTop
|
||||
}
|
||||
// This is a placehoder for adding a pattern in the header
|
||||
Image
|
||||
{
|
||||
id: backgroundPattern
|
||||
anchors.fill: parent
|
||||
fillMode: Image.Tile
|
||||
source: UM.Theme.getImage("header_pattern")
|
||||
horizontalAlignment: Image.AlignLeft
|
||||
verticalAlignment: Image.AlignTop
|
||||
}
|
||||
}
|
||||
|
||||
MainWindowHeader
|
||||
|
|
@ -248,11 +248,59 @@ UM.MainWindow
|
|||
|
||||
Cura.ActionPanelWidget
|
||||
{
|
||||
id: actionPanelWidget
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.rightMargin: UM.Theme.getSize("thick_margin").width
|
||||
anchors.bottomMargin: UM.Theme.getSize("thick_margin").height
|
||||
visible: CuraApplication.platformActivity
|
||||
|
||||
/*
|
||||
Show this panel only if there is something on the build plate, and there is NOT an opaque item in front of the build plate.
|
||||
This cannot be solved by Z indexing! If you want to try solving this, please increase this counter when you're done:
|
||||
Number of people having tried to fix this by z-indexing: 2
|
||||
The problem arises from the following render order requirements:
|
||||
- The stage menu must be rendered above the stage main.
|
||||
- The stage main must be rendered above the action panel (because the monitor page must be rendered above the action panel).
|
||||
- The action panel must be rendered above the expandable components drop-down.
|
||||
However since the expandable components drop-downs are child elements of the stage menu,
|
||||
they can't be rendered lower than elements that are lower than the stage menu.
|
||||
Therefore we opted to forego the second requirement and hide the action panel instead when something obscures it (except the expandable components).
|
||||
We assume that QQuickRectangles are always opaque and any other item is not.
|
||||
*/
|
||||
visible: CuraApplication.platformActivity && (main.item == null || !qmlTypeOf(main.item, "QQuickRectangle"))
|
||||
}
|
||||
|
||||
Item
|
||||
{
|
||||
id: additionalComponents
|
||||
width: childrenRect.width
|
||||
anchors.right: actionPanelWidget.left
|
||||
anchors.rightMargin: UM.Theme.getSize("default_margin").width
|
||||
anchors.bottom: actionPanelWidget.bottom
|
||||
anchors.bottomMargin: UM.Theme.getSize("thick_margin").height * 2
|
||||
visible: actionPanelWidget.visible
|
||||
Row
|
||||
{
|
||||
id: additionalComponentsRow
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: UM.Theme.getSize("default_margin").width
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: contentItem.addAdditionalComponents()
|
||||
|
||||
Connections
|
||||
{
|
||||
target: CuraApplication
|
||||
onAdditionalComponentsChanged: contentItem.addAdditionalComponents("saveButton")
|
||||
}
|
||||
|
||||
function addAdditionalComponents()
|
||||
{
|
||||
for (var component in CuraApplication.additionalComponents["saveButton"])
|
||||
{
|
||||
CuraApplication.additionalComponents["saveButton"][component].parent = additionalComponentsRow
|
||||
}
|
||||
}
|
||||
|
||||
Loader
|
||||
|
|
@ -815,4 +863,21 @@ UM.MainWindow
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to check whether a QML object has a certain type.
|
||||
* Taken from StackOverflow: https://stackoverflow.com/a/28384228 and
|
||||
* adapted to our code style.
|
||||
* Licensed under CC BY-SA 3.0.
|
||||
* \param obj The QtObject to get the name of.
|
||||
* \param class_name (str) The name of the class to check against. Has to be
|
||||
* the QtObject class name, not the QML entity name.
|
||||
*/
|
||||
function qmlTypeOf(obj, class_name)
|
||||
{
|
||||
//className plus "(" is the class instance without modification.
|
||||
//className plus "_QML" is the class instance with user-defined properties.
|
||||
var str = obj.toString();
|
||||
return str.indexOf(class_name + "(") == 0 || str.indexOf(class_name + "_QML") == 0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ Item
|
|||
}
|
||||
}
|
||||
|
||||
// This component will appear when there is no configurations (e.g. when losing connection)
|
||||
// This component will appear when there are no configurations (e.g. when losing connection or when they are being loaded)
|
||||
Item
|
||||
{
|
||||
width: parent.width
|
||||
|
|
@ -51,7 +51,11 @@ Item
|
|||
anchors.left: icon.right
|
||||
anchors.right: parent.right
|
||||
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
||||
text: catalog.i18nc("@label", "Downloading the configurations from the remote printer")
|
||||
// There are two cases that we want to diferenciate, one is when Cura is loading the configurations and the
|
||||
// other when the connection was lost
|
||||
text: Cura.MachineManager.printerConnected ?
|
||||
catalog.i18nc("@label", "Loading available configurations from the printer...") :
|
||||
catalog.i18nc("@label", "The configurations are not available because the printer is disconnected.")
|
||||
color: UM.Theme.getColor("text")
|
||||
font: UM.Theme.getFont("default")
|
||||
renderType: Text.NativeRendering
|
||||
|
|
|
|||
|
|
@ -173,6 +173,59 @@ Cura.ExpandablePopup
|
|||
}
|
||||
}
|
||||
|
||||
Item
|
||||
{
|
||||
height: visible ? childrenRect.height: 0
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: UM.Theme.getSize("default_margin").width
|
||||
width: childrenRect.width + UM.Theme.getSize("default_margin").width
|
||||
visible: popupItem.configuration_method == ConfigurationMenu.ConfigurationMethod.Custom
|
||||
UM.RecolorImage
|
||||
{
|
||||
id: externalLinkIcon
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
||||
height: materialInfoLabel.height
|
||||
width: height
|
||||
sourceSize.height: width
|
||||
color: UM.Theme.getColor("text_link")
|
||||
source: UM.Theme.getIcon("external_link")
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: materialInfoLabel
|
||||
wrapMode: Text.WordWrap
|
||||
text: catalog.i18nc("@label", "See the material compatibility chart")
|
||||
font: UM.Theme.getFont("default")
|
||||
color: UM.Theme.getColor("text_link")
|
||||
linkColor: UM.Theme.getColor("text_link")
|
||||
anchors.left: externalLinkIcon.right
|
||||
anchors.leftMargin: UM.Theme.getSize("narrow_margin").width
|
||||
renderType: Text.NativeRendering
|
||||
|
||||
MouseArea
|
||||
{
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
onClicked:
|
||||
{
|
||||
// open the material URL with web browser
|
||||
var url = "https://ultimaker.com/incoming-links/cura/material-compatibilty"
|
||||
Qt.openUrlExternally(url)
|
||||
}
|
||||
onEntered:
|
||||
{
|
||||
materialInfoLabel.font.underline = true
|
||||
}
|
||||
onExited:
|
||||
{
|
||||
materialInfoLabel.font.underline = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle
|
||||
{
|
||||
id: separator
|
||||
|
|
|
|||
|
|
@ -126,132 +126,15 @@ UM.ManagementPage
|
|||
}
|
||||
}
|
||||
|
||||
Grid
|
||||
{
|
||||
id: machineInfo
|
||||
|
||||
anchors.top: machineActions.visible ? machineActions.bottom : machineActions.anchors.top
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").height
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
spacing: UM.Theme.getSize("default_margin").height
|
||||
rowSpacing: UM.Theme.getSize("default_lining").height
|
||||
columns: 2
|
||||
|
||||
visible: base.currentItem
|
||||
|
||||
property bool printerConnected: Cura.MachineManager.printerConnected
|
||||
property var connectedPrinter: printerConnected ? Cura.MachineManager.printerOutputDevices[0] : null
|
||||
property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands
|
||||
property var printJob: connectedPrinter != null ? connectedPrinter.activePrintJob: null
|
||||
Label
|
||||
{
|
||||
text: catalog.i18nc("@label", "Printer type:")
|
||||
visible: base.currentItem && "definition_name" in base.currentItem.metadata
|
||||
}
|
||||
Label
|
||||
{
|
||||
text: (base.currentItem && "definition_name" in base.currentItem.metadata) ? base.currentItem.metadata.definition_name : ""
|
||||
}
|
||||
Label
|
||||
{
|
||||
text: catalog.i18nc("@label", "Connection:")
|
||||
visible: base.currentItem && base.currentItem.id == Cura.MachineManager.activeMachineId
|
||||
}
|
||||
Label
|
||||
{
|
||||
width: (parent.width * 0.7) | 0
|
||||
text: machineInfo.printerConnected ? machineInfo.connectedPrinter.connectionText : catalog.i18nc("@info:status", "The printer is not connected.")
|
||||
visible: base.currentItem && base.currentItem.id == Cura.MachineManager.activeMachineId
|
||||
wrapMode: Text.WordWrap
|
||||
}
|
||||
Label
|
||||
{
|
||||
text: catalog.i18nc("@label", "State:")
|
||||
visible: base.currentItem && base.currentItem.id == Cura.MachineManager.activeMachineId && machineInfo.printerAcceptsCommands
|
||||
}
|
||||
Label {
|
||||
width: (parent.width * 0.7) | 0
|
||||
text:
|
||||
{
|
||||
if(!machineInfo.printerConnected || !machineInfo.printerAcceptsCommands) {
|
||||
return "";
|
||||
}
|
||||
|
||||
if (machineInfo.printJob == null)
|
||||
{
|
||||
return catalog.i18nc("@label:MonitorStatus", "Waiting for a printjob");
|
||||
}
|
||||
|
||||
switch(machineInfo.printJob.state)
|
||||
{
|
||||
case "printing":
|
||||
return catalog.i18nc("@label:MonitorStatus", "Printing...");
|
||||
case "paused":
|
||||
return catalog.i18nc("@label:MonitorStatus", "Paused");
|
||||
case "pre_print":
|
||||
return catalog.i18nc("@label:MonitorStatus", "Preparing...");
|
||||
case "wait_cleanup":
|
||||
return catalog.i18nc("@label:MonitorStatus", "Waiting for someone to clear the build plate");
|
||||
case "error":
|
||||
return printerOutputDevice.errorText;
|
||||
case "maintenance":
|
||||
return catalog.i18nc("@label:MonitorStatus", "In maintenance. Please check the printer");
|
||||
case "abort": // note sure if this jobState actually occurs in the wild
|
||||
return catalog.i18nc("@label:MonitorStatus", "Aborting print...");
|
||||
|
||||
}
|
||||
return ""
|
||||
}
|
||||
visible: base.currentItem && base.currentItem.id == Cura.MachineManager.activeMachineId && machineInfo.printerAcceptsCommands
|
||||
wrapMode: Text.WordWrap
|
||||
}
|
||||
}
|
||||
|
||||
Column {
|
||||
id: additionalComponentsColumn
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: machineInfo.visible ? machineInfo.bottom : machineInfo.anchors.top
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").width
|
||||
|
||||
spacing: UM.Theme.getSize("default_margin").width
|
||||
visible: base.currentItem && base.currentItem.id == Cura.MachineManager.activeMachineId
|
||||
|
||||
Component.onCompleted:
|
||||
{
|
||||
for (var component in CuraApplication.additionalComponents["machinesDetailPane"]) {
|
||||
CuraApplication.additionalComponents["machinesDetailPane"][component].parent = additionalComponentsColumn
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
addAdditionalComponents("machinesDetailPane")
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: CuraApplication
|
||||
onAdditionalComponentsChanged: addAdditionalComponents
|
||||
}
|
||||
|
||||
function addAdditionalComponents (areaId) {
|
||||
if(areaId == "machinesDetailPane") {
|
||||
for (var component in CuraApplication.additionalComponents["machinesDetailPane"]) {
|
||||
CuraApplication.additionalComponents["machinesDetailPane"][component].parent = additionalComponentsColumn
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UM.I18nCatalog { id: catalog; name: "cura"; }
|
||||
|
||||
UM.ConfirmRemoveDialog
|
||||
{
|
||||
id: confirmDialog;
|
||||
object: base.currentItem && base.currentItem.name ? base.currentItem.name : "";
|
||||
id: confirmDialog
|
||||
object: base.currentItem && base.currentItem.name ? base.currentItem.name : ""
|
||||
onYes:
|
||||
{
|
||||
Cura.MachineManager.removeMachine(base.currentItem.id);
|
||||
Cura.MachineManager.removeMachine(base.currentItem.id)
|
||||
if(!base.currentItem)
|
||||
{
|
||||
objectList.currentIndex = activeMachineIndex()
|
||||
|
|
|
|||
|
|
@ -376,6 +376,7 @@ Item
|
|||
|
||||
width: true ? (parent.width * 0.4) | 0 : parent.width
|
||||
frameVisible: true
|
||||
clip: true
|
||||
|
||||
ListView
|
||||
{
|
||||
|
|
|
|||
|
|
@ -176,6 +176,17 @@ Item
|
|||
UM.Preferences.setValue("view/settings_list_height", h);
|
||||
}
|
||||
}
|
||||
|
||||
UM.RecolorImage
|
||||
{
|
||||
width: parent.width * 0.05
|
||||
height: parent.height * 0.3
|
||||
|
||||
anchors.centerIn: parent
|
||||
|
||||
source: UM.Theme.getIcon("grip_lines")
|
||||
color: UM.Theme.getColor("lining")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -15,4 +15,5 @@ ViewsSelector 1.0 ViewsSelector.qml
|
|||
ToolbarButton 1.0 ToolbarButton.qml
|
||||
SettingView 1.0 SettingView.qml
|
||||
ProfileMenu 1.0 ProfileMenu.qml
|
||||
ToolTip 1.0 ToolTip.qml
|
||||
CheckBoxWithTooltip 1.0 CheckBoxWithTooltip.qml
|
||||
ToolTip 1.0 ToolTip.qml
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue