mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-29 23:34:32 +08:00
243 lines
8.2 KiB
QML
243 lines
8.2 KiB
QML
// Copyright (c) 2018 Ultimaker B.V.
|
|
// Toolbox is released under the terms of the LGPLv3 or higher.
|
|
|
|
import QtQuick 2.10
|
|
import QtQuick.Controls 1.4
|
|
import QtQuick.Controls.Styles 1.4
|
|
import UM 1.1 as UM
|
|
|
|
Item
|
|
{
|
|
id: base
|
|
|
|
property var packageData
|
|
property var technicalDataSheetUrl:
|
|
{
|
|
var link = undefined
|
|
if ("Technical Data Sheet" in packageData.links)
|
|
{
|
|
// HACK: This is the way the old API (used in 3.6-beta) used to do it. For safety it's still here,
|
|
// but it can be removed over time.
|
|
link = packageData.links["Technical Data Sheet"]
|
|
}
|
|
else if ("technicalDataSheet" in packageData.links)
|
|
{
|
|
link = packageData.links["technicalDataSheet"]
|
|
}
|
|
return link
|
|
}
|
|
property var safetyDataSheetUrl:
|
|
{
|
|
var sds_name = "safetyDataSheet"
|
|
return (sds_name in packageData.links) ? packageData.links[sds_name] : undefined
|
|
}
|
|
property var printingGuidelinesUrl:
|
|
{
|
|
var pg_name = "printingGuidelines"
|
|
return (pg_name in packageData.links) ? packageData.links[pg_name] : undefined
|
|
}
|
|
|
|
property var materialWebsiteUrl:
|
|
{
|
|
var pg_name = "website"
|
|
return (pg_name in packageData.links) ? packageData.links[pg_name] : undefined
|
|
}
|
|
anchors.topMargin: UM.Theme.getSize("default_margin").height
|
|
height: visible ? childrenRect.height : 0
|
|
|
|
visible: packageData.type == "material" &&
|
|
(packageData.has_configs || technicalDataSheetUrl !== undefined ||
|
|
safetyDataSheetUrl !== undefined || printingGuidelinesUrl !== undefined ||
|
|
materialWebsiteUrl !== undefined)
|
|
|
|
Item
|
|
{
|
|
id: combatibilityItem
|
|
visible: packageData.has_configs
|
|
width: parent.width
|
|
// This is a bit of a hack, but the whole QML is pretty messy right now. This needs a big overhaul.
|
|
height: visible ? heading.height + table.height: 0
|
|
|
|
Label
|
|
{
|
|
id: heading
|
|
anchors.topMargin: UM.Theme.getSize("default_margin").height
|
|
width: parent.width
|
|
text: catalog.i18nc("@label", "Compatibility")
|
|
wrapMode: Text.WordWrap
|
|
color: UM.Theme.getColor("text_medium")
|
|
font: UM.Theme.getFont("medium")
|
|
renderType: Text.NativeRendering
|
|
}
|
|
|
|
TableView
|
|
{
|
|
id: table
|
|
anchors.top: heading.bottom
|
|
anchors.topMargin: UM.Theme.getSize("default_margin").height
|
|
width: parent.width
|
|
frameVisible: false
|
|
|
|
// Workaround for scroll issues (QTBUG-49652)
|
|
flickableItem.interactive: false
|
|
Component.onCompleted:
|
|
{
|
|
for (var i = 0; i < flickableItem.children.length; ++i)
|
|
{
|
|
flickableItem.children[i].enabled = false
|
|
}
|
|
}
|
|
selectionMode: 0
|
|
model: packageData.supported_configs
|
|
headerDelegate: Rectangle
|
|
{
|
|
color: UM.Theme.getColor("main_background")
|
|
height: UM.Theme.getSize("toolbox_chart_row").height
|
|
Label
|
|
{
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
elide: Text.ElideRight
|
|
text: styleData.value || ""
|
|
color: UM.Theme.getColor("text")
|
|
font: UM.Theme.getFont("default_bold")
|
|
renderType: Text.NativeRendering
|
|
}
|
|
Rectangle
|
|
{
|
|
anchors.bottom: parent.bottom
|
|
height: UM.Theme.getSize("default_lining").height
|
|
width: parent.width
|
|
color: "black"
|
|
}
|
|
}
|
|
rowDelegate: Item
|
|
{
|
|
height: UM.Theme.getSize("toolbox_chart_row").height
|
|
Label
|
|
{
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
elide: Text.ElideRight
|
|
text: styleData.value || ""
|
|
color: UM.Theme.getColor("text_medium")
|
|
font: UM.Theme.getFont("default")
|
|
renderType: Text.NativeRendering
|
|
}
|
|
}
|
|
itemDelegate: Item
|
|
{
|
|
height: UM.Theme.getSize("toolbox_chart_row").height
|
|
Label
|
|
{
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
elide: Text.ElideRight
|
|
text: styleData.value || ""
|
|
color: UM.Theme.getColor("text_medium")
|
|
font: UM.Theme.getFont("default")
|
|
renderType: Text.NativeRendering
|
|
}
|
|
}
|
|
|
|
Component
|
|
{
|
|
id: columnTextDelegate
|
|
Label
|
|
{
|
|
anchors.fill: parent
|
|
verticalAlignment: Text.AlignVCenter
|
|
text: styleData.value || ""
|
|
elide: Text.ElideRight
|
|
color: UM.Theme.getColor("text_medium")
|
|
font: UM.Theme.getFont("default")
|
|
renderType: Text.NativeRendering
|
|
}
|
|
}
|
|
|
|
TableViewColumn
|
|
{
|
|
role: "machine"
|
|
title: "Machine"
|
|
width: Math.floor(table.width * 0.25)
|
|
delegate: columnTextDelegate
|
|
}
|
|
TableViewColumn
|
|
{
|
|
role: "print_core"
|
|
title: "Print Core"
|
|
width: Math.floor(table.width * 0.2)
|
|
}
|
|
TableViewColumn
|
|
{
|
|
role: "build_plate"
|
|
title: "Build Plate"
|
|
width: Math.floor(table.width * 0.225)
|
|
}
|
|
TableViewColumn
|
|
{
|
|
role: "support_material"
|
|
title: "Support"
|
|
width: Math.floor(table.width * 0.225)
|
|
}
|
|
TableViewColumn
|
|
{
|
|
role: "quality"
|
|
title: "Quality"
|
|
width: Math.floor(table.width * 0.1)
|
|
}
|
|
}
|
|
}
|
|
|
|
Label
|
|
{
|
|
id: data_sheet_links
|
|
anchors.top: combatibilityItem.bottom
|
|
anchors.topMargin: UM.Theme.getSize("default_margin").height / 2
|
|
visible: base.technicalDataSheetUrl !== undefined ||
|
|
base.safetyDataSheetUrl !== undefined || base.printingGuidelinesUrl !== undefined ||
|
|
base.materialWebsiteUrl !== undefined
|
|
height: visible ? contentHeight : 0
|
|
text:
|
|
{
|
|
var result = ""
|
|
if (base.technicalDataSheetUrl !== undefined)
|
|
{
|
|
var tds_name = catalog.i18nc("@action:label", "Technical Data Sheet")
|
|
result += "<a href='%1'>%2</a>".arg(base.technicalDataSheetUrl).arg(tds_name)
|
|
}
|
|
if (base.safetyDataSheetUrl !== undefined)
|
|
{
|
|
if (result.length > 0)
|
|
{
|
|
result += "<br/>"
|
|
}
|
|
var sds_name = catalog.i18nc("@action:label", "Safety Data Sheet")
|
|
result += "<a href='%1'>%2</a>".arg(base.safetyDataSheetUrl).arg(sds_name)
|
|
}
|
|
if (base.printingGuidelinesUrl !== undefined)
|
|
{
|
|
if (result.length > 0)
|
|
{
|
|
result += "<br/>"
|
|
}
|
|
var pg_name = catalog.i18nc("@action:label", "Printing Guidelines")
|
|
result += "<a href='%1'>%2</a>".arg(base.printingGuidelinesUrl).arg(pg_name)
|
|
}
|
|
if (base.materialWebsiteUrl !== undefined)
|
|
{
|
|
if (result.length > 0)
|
|
{
|
|
result += "<br/>"
|
|
}
|
|
var pg_name = catalog.i18nc("@action:label", "Website")
|
|
result += "<a href='%1'>%2</a>".arg(base.materialWebsiteUrl).arg(pg_name)
|
|
}
|
|
|
|
return result
|
|
}
|
|
font: UM.Theme.getFont("default")
|
|
color: UM.Theme.getColor("text")
|
|
linkColor: UM.Theme.getColor("text_link")
|
|
onLinkActivated: Qt.openUrlExternally(link)
|
|
renderType: Text.NativeRendering
|
|
}
|
|
}
|