123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427 |
- // Copyright (c) 2017 Ultimaker B.V.
- // Cura is released under the terms of the AGPLv3 or higher.
- import QtQuick 2.2
- import QtQuick.Controls 1.1
- import QtQuick.Controls.Styles 1.1
- import UM 1.2 as UM
- import Cura 1.0 as Cura
- import "Menus"
- Column
- {
- id: base;
- property int currentExtruderIndex: ExtruderManager.activeExtruderIndex;
- property bool currentExtruderVisible: extrudersList.visible;
- spacing: UM.Theme.getSize("sidebar_margin").height / 2
- signal showTooltip(Item item, point location, string text)
- signal hideTooltip()
- Item
- {
- anchors
- {
- left: parent.left
- right: parent.right
- }
- visible: extruderSelectionRow.visible
- height: UM.Theme.getSize("default_lining").height
- width: height
- }
- Item
- {
- anchors
- {
- left: parent.left
- leftMargin: UM.Theme.getSize("sidebar_margin").width
- right: parent.right
- rightMargin: UM.Theme.getSize("sidebar_margin").width
- }
- visible: extruderSelectionRow.visible
- height: UM.Theme.getSize("default_lining").hieght
- width: height
- }
- Item
- {
- id: extruderSelectionRow
- width: parent.width
- height: UM.Theme.getSize("sidebar_tabs").height * 2 / 3
- visible: machineExtruderCount.properties.value > 1 && !sidebar.monitoringPrint
- anchors
- {
- left: parent.left
- leftMargin: UM.Theme.getSize("default_margin").width * 1.4
- right: parent.right
- rightMargin: UM.Theme.getSize("default_margin").width * 1.4
- topMargin: UM.Theme.getSize("default_margin").height
- }
- ListView
- {
- id: extrudersList
- property var index: 0
- height: UM.Theme.getSize("sidebar_header_mode_tabs").height
- width: parent.width
- boundsBehavior: Flickable.StopAtBounds
- anchors
- {
- left: parent.left
- leftMargin: UM.Theme.getSize("default_margin").width / 2
- right: parent.right
- rightMargin: UM.Theme.getSize("default_margin").width / 2
- verticalCenter: parent.verticalCenter
- }
- ExclusiveGroup { id: extruderMenuGroup; }
- orientation: ListView.Horizontal
- model: Cura.ExtrudersModel { id: extrudersModel; addGlobal: false }
- Connections
- {
- target: Cura.MachineManager
- onGlobalContainerChanged:
- {
- forceActiveFocus() // Changing focus applies the currently-being-typed values so it can change the displayed setting values.
- var extruder_index = (machineExtruderCount.properties.value == 1) ? -1 : 0
- ExtruderManager.setActiveExtruderIndex(extruder_index);
- }
- }
- delegate: Button
- {
- height: ListView.view.height
- width: ListView.view.width / extrudersModel.rowCount()
- text: model.name
- tooltip: model.name
- exclusiveGroup: extruderMenuGroup
- checked: base.currentExtruderIndex == index
- onClicked:
- {
- forceActiveFocus() // Changing focus applies the currently-being-typed values so it can change the displayed setting values.
- ExtruderManager.setActiveExtruderIndex(index);
- }
- style: ButtonStyle
- {
- background: Item
- {
- Rectangle
- {
- anchors.fill: parent
- border.width: UM.Theme.getSize("default_lining").width
- border.color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_border") :
- control.hovered ? UM.Theme.getColor("action_button_hovered_border") :
- UM.Theme.getColor("action_button_border")
- color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active") :
- control.hovered ? UM.Theme.getColor("action_button_hovered") :
- UM.Theme.getColor("action_button")
- Behavior on color { ColorAnimation { duration: 50; } }
- }
- Item
- {
- id: extruderButtonFace
- anchors.centerIn: parent
- width: {
- var extruderTextWidth = extruderStaticText.visible ? extruderStaticText.width : 0;
- var iconWidth = extruderIconItem.width;
- return extruderTextWidth + iconWidth + UM.Theme.getSize("default_margin").width / 2;
- }
- // Static text "Extruder"
- Text
- {
- id: extruderStaticText
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: parent.left
- color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_text") :
- control.hovered ? UM.Theme.getColor("action_button_hovered_text") :
- UM.Theme.getColor("action_button_text")
- font: control.checked ? UM.Theme.getFont("default_bold") : UM.Theme.getFont("default")
- text: catalog.i18nc("@label", "Extruder")
- visible: width < (control.width - extruderIconItem.width - UM.Theme.getSize("default_margin").width)
- elide: Text.ElideRight
- }
- // Everthing for the extruder icon
- Item
- {
- id: extruderIconItem
- anchors.verticalCenter: parent.verticalCenter
- anchors.right: parent.right
- property var sizeToUse:
- {
- var minimumWidth = control.width < UM.Theme.getSize("button").width ? control.width : UM.Theme.getSize("button").width;
- var minimumHeight = control.height < UM.Theme.getSize("button").height ? control.height : UM.Theme.getSize("button").height;
- var minimumSize = minimumWidth < minimumHeight ? minimumWidth : minimumHeight;
- minimumSize -= UM.Theme.getSize("default_margin").width / 2;
- return minimumSize;
- }
- width: sizeToUse
- height: sizeToUse
- UM.RecolorImage {
- id: mainCircle
- anchors.fill: parent
- sourceSize.width: parent.width
- sourceSize.height: parent.width
- source: UM.Theme.getIcon("extruder_button")
- color: extruderNumberText.color
- }
- Text
- {
- id: extruderNumberText
- anchors.centerIn: parent
- text: index + 1;
- color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_text") :
- control.hovered ? UM.Theme.getColor("action_button_hovered_text") :
- UM.Theme.getColor("action_button_text")
- font: UM.Theme.getFont("default_bold")
- }
- // Material colour circle
- // Only draw the filling colour of the material inside the SVG border.
- Rectangle
- {
- anchors
- {
- right: parent.right
- top: parent.top
- rightMargin: parent.sizeToUse * 0.01
- topMargin: parent.sizeToUse * 0.05
- }
- color: model.color
- width: parent.width * 0.35
- height: parent.height * 0.35
- radius: width / 2
- border.width: 1
- border.color: UM.Theme.getColor("extruder_button_material_border")
- opacity: !control.checked ? 0.6 : 1.0
- }
- }
- }
- }
- label: Item {}
- }
- }
- }
- }
- Item
- {
- id: variantRowSpacer
- height: UM.Theme.getSize("sidebar_margin").height / 4
- width: height
- visible: !extruderSelectionRow.visible
- }
- // Material Row
- Item
- {
- id: materialRow
- height: UM.Theme.getSize("sidebar_setup").height
- visible: Cura.MachineManager.hasMaterials && !sidebar.monitoringPrint && !sidebar.hideSettings
- anchors
- {
- left: parent.left
- leftMargin: UM.Theme.getSize("sidebar_margin").width
- right: parent.right
- rightMargin: UM.Theme.getSize("sidebar_margin").width
- }
- Text
- {
- id: materialLabel
- text: catalog.i18nc("@label","Material");
- width: parent.width * 0.45 - UM.Theme.getSize("default_margin").width
- font: UM.Theme.getFont("default");
- color: UM.Theme.getColor("text");
- }
- ToolButton {
- id: materialSelection
- text: Cura.MachineManager.activeMaterialName
- tooltip: Cura.MachineManager.activeMaterialName
- visible: Cura.MachineManager.hasMaterials
- property var valueError:
- {
- var data = Cura.ContainerManager.getContainerMetaDataEntry(Cura.MachineManager.activeMaterialId, "compatible")
- if(data == "False")
- {
- return true
- }
- else
- {
- return false
- }
- }
- property var valueWarning: ! Cura.MachineManager.isActiveQualitySupported
- enabled: !extrudersList.visible || base.currentExtruderIndex > -1
- height: UM.Theme.getSize("setting_control").height
- width: parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width
- anchors.right: parent.right
- style: UM.Theme.styles.sidebar_header_button
- activeFocusOnPress: true;
- menu: MaterialMenu { extruderIndex: base.currentExtruderIndex }
- }
- }
- // Print core row
- Item
- {
- id: printCoreRow
- height: UM.Theme.getSize("sidebar_setup").height
- visible: Cura.MachineManager.hasVariants && !sidebar.monitoringPrint && !sidebar.hideSettings
- anchors
- {
- left: parent.left
- leftMargin: UM.Theme.getSize("sidebar_margin").width
- right: parent.right
- rightMargin: UM.Theme.getSize("sidebar_margin").width
- }
- Text
- {
- id: printCoreLabel
- text: Cura.MachineManager.activeDefinitionVariantsName;
- width: parent.width * 0.45 - UM.Theme.getSize("default_margin").width
- font: UM.Theme.getFont("default");
- color: UM.Theme.getColor("text");
- }
- ToolButton {
- id: printCoreSelection
- text: Cura.MachineManager.activeVariantName
- tooltip: Cura.MachineManager.activeVariantName;
- visible: Cura.MachineManager.hasVariants
- height: UM.Theme.getSize("setting_control").height
- width: parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width
- anchors.right: parent.right
- style: UM.Theme.styles.sidebar_header_button
- activeFocusOnPress: true;
- menu: NozzleMenu { extruderIndex: base.currentExtruderIndex }
- }
- }
- // Material info row
- Item
- {
- id: materialInfoRow
- height: UM.Theme.getSize("sidebar_setup").height / 2
- visible: (Cura.MachineManager.hasVariants || Cura.MachineManager.hasMaterials) && !sidebar.monitoringPrint && !sidebar.hideSettings
- anchors
- {
- left: parent.left
- leftMargin: UM.Theme.getSize("sidebar_margin").width
- right: parent.right
- rightMargin: UM.Theme.getSize("sidebar_margin").width
- }
- Item
- {
- height: UM.Theme.getSize("sidebar_setup").height
- anchors.right: parent.right
- width: parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width
- Text
- {
- id: materialInfoLabel
- wrapMode: Text.WordWrap
- text: catalog.i18nc("@label", "Check material compability")
- font: UM.Theme.getFont("default");
- verticalAlignment: Text.AlignTop
- anchors.top: parent.top
- anchors.right: parent.right
- anchors.bottom: parent.bottom
- color: UM.Theme.getColor("text")
- MouseArea
- {
- anchors.fill: parent
- hoverEnabled: true
- onClicked:
- {
- // open the material URL with web browser
- var version = UM.Application.version;
- var machineName = Cura.MachineManager.activeMachine.definition.id;
- var url = "https://ultimaker.com/materialcompatibility/" + version + "/" + machineName;
- Qt.openUrlExternally(url);
- }
- onEntered:
- {
- var content = catalog.i18nc("@tooltip", "Click to check the material compatibility on Ultimaker.com.");
- base.showTooltip(
- materialInfoRow,
- Qt.point(-UM.Theme.getSize("sidebar_margin").width, 0),
- catalog.i18nc("@tooltip", content)
- );
- }
- onExited: base.hideTooltip();
- }
- }
- UM.RecolorImage
- {
- id: warningImage
- anchors.right: parent.right
- anchors.verticalCenter: parent.Bottom
- source: UM.Theme.getIcon("warning")
- width: UM.Theme.getSize("section_icon").width
- height: UM.Theme.getSize("section_icon").height
- //sourceSize.width: width + 5
- //sourceSize.height: width + 5
- color: UM.Theme.getColor("setting_validation_warning")
- visible: !Cura.MachineManager.isCurrentSetupSupported
- }
- }
- }
- UM.SettingPropertyProvider
- {
- id: machineExtruderCount
- containerStackId: Cura.MachineManager.activeMachineId
- key: "machine_extruder_count"
- watchedProperties: [ "value" ]
- storeIndex: 0
- }
- UM.I18nCatalog { id: catalog; name:"cura" }
- }
|