MachineSettingsAction.qml 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866
  1. // Copyright (c) 2016 Ultimaker B.V.
  2. // Cura is released under the terms of the AGPLv3 or higher.
  3. import QtQuick 2.2
  4. import QtQuick.Controls 1.1
  5. import QtQuick.Layouts 1.1
  6. import QtQuick.Window 2.1
  7. import UM 1.2 as UM
  8. import Cura 1.0 as Cura
  9. Cura.MachineAction
  10. {
  11. id: base
  12. property var extrudersModel: Cura.ExtrudersModel{}
  13. property int extruderTabsCount: 0
  14. Component.onCompleted:
  15. {
  16. // Populate extruder tabs after a short delay, because otherwise the tabs that are added when
  17. // the dialog is created are stuck.
  18. extruderTabsCountDelay.start();
  19. }
  20. Timer
  21. {
  22. id: extruderTabsCountDelay
  23. repeat: false
  24. interval: 1
  25. onTriggered: base.extruderTabsCount = (machineExtruderCountProvider.properties.value > 1) ? parseInt(machineExtruderCountProvider.properties.value) : 0
  26. }
  27. Connections
  28. {
  29. target: dialog ? dialog : null
  30. ignoreUnknownSignals: true
  31. // Any which way this action dialog is dismissed, make sure it is properly finished
  32. onNextClicked: manager.onFinishAction()
  33. onBackClicked: manager.onFinishAction()
  34. onAccepted: manager.onFinishAction()
  35. onRejected: manager.onFinishAction()
  36. onClosing: manager.onFinishAction()
  37. }
  38. anchors.fill: parent;
  39. Item
  40. {
  41. id: bedLevelMachineAction
  42. anchors.fill: parent;
  43. UM.I18nCatalog { id: catalog; name: "cura"; }
  44. Label
  45. {
  46. id: pageTitle
  47. width: parent.width
  48. text: catalog.i18nc("@title", "Machine Settings")
  49. wrapMode: Text.WordWrap
  50. font.pointSize: 18;
  51. }
  52. TabView
  53. {
  54. id: settingsTabs
  55. height: parent.height - y
  56. width: parent.width
  57. anchors.left: parent.left
  58. anchors.top: pageTitle.bottom
  59. anchors.topMargin: UM.Theme.getSize("default_margin").height
  60. property real columnWidth: Math.floor((width - 3 * UM.Theme.getSize("default_margin").width) / 2)
  61. Tab
  62. {
  63. title: catalog.i18nc("@title:tab", "Printer");
  64. anchors.margins: UM.Theme.getSize("default_margin").width
  65. Column
  66. {
  67. spacing: UM.Theme.getSize("default_margin").height
  68. Row
  69. {
  70. width: parent.width
  71. spacing: UM.Theme.getSize("default_margin").height
  72. Column
  73. {
  74. width: settingsTabs.columnWidth
  75. spacing: UM.Theme.getSize("default_margin").height
  76. Label
  77. {
  78. text: catalog.i18nc("@label", "Printer Settings")
  79. font.bold: true
  80. }
  81. Grid
  82. {
  83. columns: 2
  84. columnSpacing: UM.Theme.getSize("default_margin").width
  85. rowSpacing: UM.Theme.getSize("default_lining").width
  86. Label
  87. {
  88. text: catalog.i18nc("@label", "X (Width)")
  89. }
  90. Loader
  91. {
  92. id: buildAreaWidthField
  93. sourceComponent: numericTextFieldWithUnit
  94. property var propertyProvider: machineWidthProvider
  95. property string unit: catalog.i18nc("@label", "mm")
  96. property bool forceUpdateOnChange: true
  97. }
  98. Label
  99. {
  100. text: catalog.i18nc("@label", "Y (Depth)")
  101. }
  102. Loader
  103. {
  104. id: buildAreaDepthField
  105. sourceComponent: numericTextFieldWithUnit
  106. property var propertyProvider: machineDepthProvider
  107. property string unit: catalog.i18nc("@label", "mm")
  108. property bool forceUpdateOnChange: true
  109. }
  110. Label
  111. {
  112. text: catalog.i18nc("@label", "Z (Height)")
  113. }
  114. Loader
  115. {
  116. id: buildAreaHeightField
  117. sourceComponent: numericTextFieldWithUnit
  118. property var propertyProvider: machineHeightProvider
  119. property string unit: catalog.i18nc("@label", "mm")
  120. property bool forceUpdateOnChange: true
  121. }
  122. }
  123. Column
  124. {
  125. Row
  126. {
  127. spacing: UM.Theme.getSize("default_margin").width
  128. Label
  129. {
  130. text: catalog.i18nc("@label", "Build Plate Shape")
  131. }
  132. ComboBox
  133. {
  134. id: shapeComboBox
  135. model: ListModel
  136. {
  137. id: shapesModel
  138. Component.onCompleted:
  139. {
  140. // Options come in as a string-representation of an OrderedDict
  141. var options = machineShapeProvider.properties.options.match(/^OrderedDict\(\[\((.*)\)\]\)$/);
  142. if(options)
  143. {
  144. options = options[1].split("), (")
  145. for(var i = 0; i < options.length; i++)
  146. {
  147. var option = options[i].substring(1, options[i].length - 1).split("', '")
  148. shapesModel.append({text: option[1], value: option[0]});
  149. }
  150. }
  151. }
  152. }
  153. currentIndex:
  154. {
  155. var currentValue = machineShapeProvider.properties.value;
  156. var index = 0;
  157. for(var i = 0; i < shapesModel.count; i++)
  158. {
  159. if(shapesModel.get(i).value == currentValue) {
  160. index = i;
  161. break;
  162. }
  163. }
  164. return index
  165. }
  166. onActivated:
  167. {
  168. if(machineShapeProvider.properties.value != shapesModel.get(index).value)
  169. {
  170. machineShapeProvider.setPropertyValue("value", shapesModel.get(index).value);
  171. manager.forceUpdate();
  172. }
  173. }
  174. }
  175. }
  176. CheckBox
  177. {
  178. id: centerIsZeroCheckBox
  179. text: catalog.i18nc("@option:check", "Machine Center is Zero")
  180. checked: String(machineCenterIsZeroProvider.properties.value).toLowerCase() != 'false'
  181. onClicked:
  182. {
  183. machineCenterIsZeroProvider.setPropertyValue("value", checked);
  184. manager.forceUpdate();
  185. }
  186. }
  187. CheckBox
  188. {
  189. id: heatedBedCheckBox
  190. text: catalog.i18nc("@option:check", "Heated Bed")
  191. checked: String(machineHeatedBedProvider.properties.value).toLowerCase() != 'false'
  192. onClicked: machineHeatedBedProvider.setPropertyValue("value", checked)
  193. }
  194. }
  195. Row
  196. {
  197. spacing: UM.Theme.getSize("default_margin").width
  198. Label
  199. {
  200. text: catalog.i18nc("@label", "GCode Flavor")
  201. }
  202. ComboBox
  203. {
  204. model: ListModel
  205. {
  206. id: flavorModel
  207. Component.onCompleted:
  208. {
  209. // Options come in as a string-representation of an OrderedDict
  210. var options = machineGCodeFlavorProvider.properties.options.match(/^OrderedDict\(\[\((.*)\)\]\)$/);
  211. if(options)
  212. {
  213. options = options[1].split("), (")
  214. for(var i = 0; i < options.length; i++)
  215. {
  216. var option = options[i].substring(1, options[i].length - 1).split("', '")
  217. flavorModel.append({text: option[1], value: option[0]});
  218. }
  219. }
  220. }
  221. }
  222. currentIndex:
  223. {
  224. var currentValue = machineGCodeFlavorProvider.properties.value;
  225. var index = 0;
  226. for(var i = 0; i < flavorModel.count; i++)
  227. {
  228. if(flavorModel.get(i).value == currentValue) {
  229. index = i;
  230. break;
  231. }
  232. }
  233. return index
  234. }
  235. onActivated:
  236. {
  237. machineGCodeFlavorProvider.setPropertyValue("value", flavorModel.get(index).value);
  238. manager.updateHasMaterialsMetadata();
  239. }
  240. }
  241. }
  242. }
  243. Column
  244. {
  245. width: settingsTabs.columnWidth
  246. spacing: UM.Theme.getSize("default_margin").height
  247. Label
  248. {
  249. text: catalog.i18nc("@label", "Printhead Settings")
  250. font.bold: true
  251. }
  252. Grid
  253. {
  254. columns: 2
  255. columnSpacing: UM.Theme.getSize("default_margin").width
  256. rowSpacing: UM.Theme.getSize("default_lining").width
  257. Label
  258. {
  259. text: catalog.i18nc("@label", "X min")
  260. }
  261. TextField
  262. {
  263. id: printheadXMinField
  264. text: getHeadPolygonCoord("x", "min")
  265. validator: RegExpValidator { regExp: /[0-9\.]{0,6}/ }
  266. onEditingFinished: setHeadPolygon()
  267. }
  268. Label
  269. {
  270. text: catalog.i18nc("@label", "Y min")
  271. }
  272. TextField
  273. {
  274. id: printheadYMinField
  275. text: getHeadPolygonCoord("y", "min")
  276. validator: RegExpValidator { regExp: /[0-9\.]{0,6}/ }
  277. onEditingFinished: setHeadPolygon()
  278. }
  279. Label
  280. {
  281. text: catalog.i18nc("@label", "X max")
  282. }
  283. TextField
  284. {
  285. id: printheadXMaxField
  286. text: getHeadPolygonCoord("x", "max")
  287. validator: RegExpValidator { regExp: /[0-9\.]{0,6}/ }
  288. onEditingFinished: setHeadPolygon()
  289. }
  290. Label
  291. {
  292. text: catalog.i18nc("@label", "Y max")
  293. }
  294. TextField
  295. {
  296. id: printheadYMaxField
  297. text: getHeadPolygonCoord("y", "max")
  298. validator: RegExpValidator { regExp: /[0-9\.]{0,6}/ }
  299. onEditingFinished: setHeadPolygon()
  300. }
  301. Item { width: UM.Theme.getSize("default_margin").width; height: UM.Theme.getSize("default_margin").height }
  302. Item { width: UM.Theme.getSize("default_margin").width; height: UM.Theme.getSize("default_margin").height }
  303. Label
  304. {
  305. text: catalog.i18nc("@label", "Gantry height")
  306. }
  307. Loader
  308. {
  309. id: gantryHeightField
  310. sourceComponent: numericTextFieldWithUnit
  311. property var propertyProvider: gantryHeightProvider
  312. property string unit: catalog.i18nc("@label", "mm")
  313. property bool forceUpdateOnChange: false
  314. }
  315. Item { width: UM.Theme.getSize("default_margin").width; height: UM.Theme.getSize("default_margin").height }
  316. Item { width: UM.Theme.getSize("default_margin").width; height: UM.Theme.getSize("default_margin").height }
  317. Label
  318. {
  319. text: catalog.i18nc("@label", "Number of Extruders")
  320. visible: extruderCountComboBox.visible
  321. }
  322. ComboBox
  323. {
  324. id: extruderCountComboBox
  325. visible: manager.definedExtruderCount > 1
  326. model: ListModel
  327. {
  328. id: extruderCountModel
  329. Component.onCompleted:
  330. {
  331. for(var i = 0; i < manager.definedExtruderCount; i++)
  332. {
  333. extruderCountModel.append({text: String(i + 1), value: i});
  334. }
  335. }
  336. }
  337. currentIndex: machineExtruderCountProvider.properties.value - 1
  338. onActivated:
  339. {
  340. manager.setMachineExtruderCount(index + 1);
  341. base.extruderTabsCount = (index > 0) ? index + 1 : 0;
  342. }
  343. }
  344. Label
  345. {
  346. text: catalog.i18nc("@label", "Nozzle size")
  347. visible: nozzleSizeField.visible
  348. }
  349. Loader
  350. {
  351. id: nozzleSizeField
  352. visible: !Cura.MachineManager.hasVariants && machineExtruderCountProvider.properties.value == 1
  353. sourceComponent: numericTextFieldWithUnit
  354. property var propertyProvider: machineNozzleSizeProvider
  355. property string unit: catalog.i18nc("@label", "mm")
  356. property bool forceUpdateOnChange: false
  357. }
  358. }
  359. }
  360. }
  361. Row
  362. {
  363. spacing: UM.Theme.getSize("default_margin").width
  364. anchors.left: parent.left
  365. anchors.right: parent.right
  366. height: parent.height - y
  367. Column
  368. {
  369. height: parent.height
  370. width: settingsTabs.columnWidth
  371. Label
  372. {
  373. text: catalog.i18nc("@label", "Start Gcode")
  374. font.bold: true
  375. }
  376. TextArea
  377. {
  378. id: machineStartGcodeField
  379. width: parent.width
  380. height: parent.height - y
  381. font: UM.Theme.getFont("fixed")
  382. text: machineStartGcodeProvider.properties.value
  383. onActiveFocusChanged:
  384. {
  385. if(!activeFocus)
  386. {
  387. machineStartGcodeProvider.setPropertyValue("value", machineStartGcodeField.text)
  388. }
  389. }
  390. Component.onCompleted:
  391. {
  392. wrapMode = TextEdit.NoWrap;
  393. }
  394. }
  395. }
  396. Column {
  397. height: parent.height
  398. width: settingsTabs.columnWidth
  399. Label
  400. {
  401. text: catalog.i18nc("@label", "End Gcode")
  402. font.bold: true
  403. }
  404. TextArea
  405. {
  406. id: machineEndGcodeField
  407. width: parent.width
  408. height: parent.height - y
  409. font: UM.Theme.getFont("fixed")
  410. text: machineEndGcodeProvider.properties.value
  411. onActiveFocusChanged:
  412. {
  413. if(!activeFocus)
  414. {
  415. machineEndGcodeProvider.setPropertyValue("value", machineEndGcodeField.text)
  416. }
  417. }
  418. Component.onCompleted:
  419. {
  420. wrapMode = TextEdit.NoWrap;
  421. }
  422. }
  423. }
  424. }
  425. function getHeadPolygonCoord(axis, minMax)
  426. {
  427. var polygon = JSON.parse(machineHeadPolygonProvider.properties.value);
  428. var item = (axis == "x") ? 0 : 1
  429. var result = polygon[0][item];
  430. for(var i = 1; i < polygon.length; i++) {
  431. if (minMax == "min") {
  432. result = Math.min(result, polygon[i][item]);
  433. } else {
  434. result = Math.max(result, polygon[i][item]);
  435. }
  436. }
  437. return Math.abs(result);
  438. }
  439. function setHeadPolygon()
  440. {
  441. var polygon = [];
  442. polygon.push([-parseFloat(printheadXMinField.text), parseFloat(printheadYMaxField.text)]);
  443. polygon.push([-parseFloat(printheadXMinField.text),-parseFloat(printheadYMinField.text)]);
  444. polygon.push([ parseFloat(printheadXMaxField.text), parseFloat(printheadYMaxField.text)]);
  445. polygon.push([ parseFloat(printheadXMaxField.text),-parseFloat(printheadYMinField.text)]);
  446. var polygon_string = JSON.stringify(polygon);
  447. if(polygon != machineHeadPolygonProvider.properties.value)
  448. {
  449. machineHeadPolygonProvider.setPropertyValue("value", polygon_string);
  450. manager.forceUpdate();
  451. }
  452. }
  453. }
  454. }
  455. onCurrentIndexChanged:
  456. {
  457. if(currentIndex > 0)
  458. {
  459. contentItem.forceActiveFocus();
  460. ExtruderManager.setActiveExtruderIndex(currentIndex - 1);
  461. }
  462. }
  463. Repeater
  464. {
  465. id: extruderTabsRepeater
  466. model: base.extruderTabsCount
  467. Tab
  468. {
  469. title: base.extrudersModel.getItem(index).name
  470. anchors.margins: UM.Theme.getSize("default_margin").width
  471. Column
  472. {
  473. spacing: UM.Theme.getSize("default_margin").width
  474. Label
  475. {
  476. text: catalog.i18nc("@label", "Nozzle Settings")
  477. font.bold: true
  478. }
  479. Grid
  480. {
  481. columns: 2
  482. columnSpacing: UM.Theme.getSize("default_margin").width
  483. rowSpacing: UM.Theme.getSize("default_lining").width
  484. Label
  485. {
  486. text: catalog.i18nc("@label", "Nozzle size")
  487. visible: extruderNozzleSizeField.visible
  488. }
  489. Loader
  490. {
  491. id: extruderNozzleSizeField
  492. visible: !Cura.MachineManager.hasVariants
  493. sourceComponent: numericTextFieldWithUnit
  494. property var propertyProvider: extruderNozzleSizeProvider
  495. property string unit: catalog.i18nc("@label", "mm")
  496. property bool forceUpdateOnChange: false
  497. }
  498. Label
  499. {
  500. text: catalog.i18nc("@label", "Nozzle offset X")
  501. }
  502. Loader
  503. {
  504. id: extruderOffsetXField
  505. sourceComponent: numericTextFieldWithUnit
  506. property var propertyProvider: extruderOffsetXProvider
  507. property string unit: catalog.i18nc("@label", "mm")
  508. property bool forceUpdateOnChange: true
  509. }
  510. Label
  511. {
  512. text: catalog.i18nc("@label", "Nozzle offset Y")
  513. }
  514. Loader
  515. {
  516. id: extruderOffsetYField
  517. sourceComponent: numericTextFieldWithUnit
  518. property var propertyProvider: extruderOffsetYProvider
  519. property string unit: catalog.i18nc("@label", "mm")
  520. property bool forceUpdateOnChange: true
  521. }
  522. }
  523. Row
  524. {
  525. spacing: UM.Theme.getSize("default_margin").width
  526. anchors.left: parent.left
  527. anchors.right: parent.right
  528. height: parent.height - y
  529. Column
  530. {
  531. height: parent.height
  532. width: settingsTabs.columnWidth
  533. Label
  534. {
  535. text: catalog.i18nc("@label", "Extruder Start Gcode")
  536. font.bold: true
  537. }
  538. TextArea
  539. {
  540. id: extruderStartGcodeField
  541. width: parent.width
  542. height: parent.height - y
  543. font: UM.Theme.getFont("fixed")
  544. text: (extruderStartGcodeProvider.properties.value) ? extruderStartGcodeProvider.properties.value : ""
  545. onActiveFocusChanged:
  546. {
  547. if(!activeFocus)
  548. {
  549. extruderStartGcodeProvider.setPropertyValue("value", extruderStartGcodeField.text)
  550. }
  551. }
  552. Component.onCompleted:
  553. {
  554. wrapMode = TextEdit.NoWrap;
  555. }
  556. }
  557. }
  558. Column {
  559. height: parent.height
  560. width: settingsTabs.columnWidth
  561. Label
  562. {
  563. text: catalog.i18nc("@label", "Extruder End Gcode")
  564. font.bold: true
  565. }
  566. TextArea
  567. {
  568. id: extruderEndGcodeField
  569. width: parent.width
  570. height: parent.height - y
  571. font: UM.Theme.getFont("fixed")
  572. text: (extruderEndGcodeProvider.properties.value) ? extruderEndGcodeProvider.properties.value : ""
  573. onActiveFocusChanged:
  574. {
  575. if(!activeFocus)
  576. {
  577. extruderEndGcodeProvider.setPropertyValue("value", extruderEndGcodeField.text)
  578. }
  579. }
  580. Component.onCompleted:
  581. {
  582. wrapMode = TextEdit.NoWrap;
  583. }
  584. }
  585. }
  586. }
  587. }
  588. }
  589. }
  590. }
  591. }
  592. Component
  593. {
  594. id: numericTextFieldWithUnit
  595. Item {
  596. height: textField.height
  597. width: textField.width
  598. TextField
  599. {
  600. id: textField
  601. text: (propertyProvider.properties.value) ? propertyProvider.properties.value : ""
  602. validator: RegExpValidator { regExp: /[0-9\.]{0,6}/ }
  603. onEditingFinished:
  604. {
  605. if (propertyProvider && text != propertyProvider.properties.value)
  606. {
  607. propertyProvider.setPropertyValue("value", text);
  608. if(forceUpdateOnChange)
  609. {
  610. var extruderIndex = ExtruderManager.activeExtruderIndex;
  611. manager.forceUpdate();
  612. if(ExtruderManager.activeExtruderIndex != extruderIndex)
  613. {
  614. ExtruderManager.setActiveExtruderIndex(extruderIndex)
  615. }
  616. }
  617. }
  618. }
  619. }
  620. Label
  621. {
  622. text: unit
  623. anchors.right: textField.right
  624. anchors.rightMargin: y - textField.y
  625. anchors.verticalCenter: textField.verticalCenter
  626. }
  627. }
  628. }
  629. UM.SettingPropertyProvider
  630. {
  631. id: machineWidthProvider
  632. containerStackId: Cura.MachineManager.activeMachineId
  633. key: "machine_width"
  634. watchedProperties: [ "value" ]
  635. storeIndex: manager.containerIndex
  636. }
  637. UM.SettingPropertyProvider
  638. {
  639. id: machineDepthProvider
  640. containerStackId: Cura.MachineManager.activeMachineId
  641. key: "machine_depth"
  642. watchedProperties: [ "value" ]
  643. storeIndex: manager.containerIndex
  644. }
  645. UM.SettingPropertyProvider
  646. {
  647. id: machineHeightProvider
  648. containerStackId: Cura.MachineManager.activeMachineId
  649. key: "machine_height"
  650. watchedProperties: [ "value" ]
  651. storeIndex: manager.containerIndex
  652. }
  653. UM.SettingPropertyProvider
  654. {
  655. id: machineShapeProvider
  656. containerStackId: Cura.MachineManager.activeMachineId
  657. key: "machine_shape"
  658. watchedProperties: [ "value", "options" ]
  659. storeIndex: manager.containerIndex
  660. }
  661. UM.SettingPropertyProvider
  662. {
  663. id: machineHeatedBedProvider
  664. containerStackId: Cura.MachineManager.activeMachineId
  665. key: "machine_heated_bed"
  666. watchedProperties: [ "value" ]
  667. storeIndex: manager.containerIndex
  668. }
  669. UM.SettingPropertyProvider
  670. {
  671. id: machineCenterIsZeroProvider
  672. containerStackId: Cura.MachineManager.activeMachineId
  673. key: "machine_center_is_zero"
  674. watchedProperties: [ "value" ]
  675. storeIndex: manager.containerIndex
  676. }
  677. UM.SettingPropertyProvider
  678. {
  679. id: machineGCodeFlavorProvider
  680. containerStackId: Cura.MachineManager.activeMachineId
  681. key: "machine_gcode_flavor"
  682. watchedProperties: [ "value", "options" ]
  683. storeIndex: manager.containerIndex
  684. }
  685. UM.SettingPropertyProvider
  686. {
  687. id: machineNozzleSizeProvider
  688. containerStackId: Cura.MachineManager.activeMachineId
  689. key: "machine_nozzle_size"
  690. watchedProperties: [ "value" ]
  691. storeIndex: manager.containerIndex
  692. }
  693. UM.SettingPropertyProvider
  694. {
  695. id: machineExtruderCountProvider
  696. containerStackId: Cura.MachineManager.activeMachineId
  697. key: "machine_extruder_count"
  698. watchedProperties: [ "value" ]
  699. storeIndex: manager.containerIndex
  700. }
  701. UM.SettingPropertyProvider
  702. {
  703. id: gantryHeightProvider
  704. containerStackId: Cura.MachineManager.activeMachineId
  705. key: "gantry_height"
  706. watchedProperties: [ "value" ]
  707. storeIndex: manager.containerIndex
  708. }
  709. UM.SettingPropertyProvider
  710. {
  711. id: machineHeadPolygonProvider
  712. containerStackId: Cura.MachineManager.activeMachineId
  713. key: "machine_head_with_fans_polygon"
  714. watchedProperties: [ "value" ]
  715. storeIndex: manager.containerIndex
  716. }
  717. UM.SettingPropertyProvider
  718. {
  719. id: machineStartGcodeProvider
  720. containerStackId: Cura.MachineManager.activeMachineId
  721. key: "machine_start_gcode"
  722. watchedProperties: [ "value" ]
  723. storeIndex: manager.containerIndex
  724. }
  725. UM.SettingPropertyProvider
  726. {
  727. id: machineEndGcodeProvider
  728. containerStackId: Cura.MachineManager.activeMachineId
  729. key: "machine_end_gcode"
  730. watchedProperties: [ "value" ]
  731. storeIndex: manager.containerIndex
  732. }
  733. UM.SettingPropertyProvider
  734. {
  735. id: extruderNozzleSizeProvider
  736. containerStackId: settingsTabs.currentIndex > 0 ? Cura.MachineManager.activeStackId : ""
  737. key: "machine_nozzle_size"
  738. watchedProperties: [ "value" ]
  739. storeIndex: manager.containerIndex
  740. }
  741. UM.SettingPropertyProvider
  742. {
  743. id: extruderOffsetXProvider
  744. containerStackId: settingsTabs.currentIndex > 0 ? Cura.MachineManager.activeStackId : ""
  745. key: "machine_nozzle_offset_x"
  746. watchedProperties: [ "value" ]
  747. storeIndex: manager.containerIndex
  748. }
  749. UM.SettingPropertyProvider
  750. {
  751. id: extruderOffsetYProvider
  752. containerStackId: settingsTabs.currentIndex > 0 ? Cura.MachineManager.activeStackId : ""
  753. key: "machine_nozzle_offset_y"
  754. watchedProperties: [ "value" ]
  755. storeIndex: manager.containerIndex
  756. }
  757. UM.SettingPropertyProvider
  758. {
  759. id: extruderStartGcodeProvider
  760. containerStackId: settingsTabs.currentIndex > 0 ? Cura.MachineManager.activeStackId : ""
  761. key: "machine_extruder_start_code"
  762. watchedProperties: [ "value" ]
  763. storeIndex: manager.containerIndex
  764. }
  765. UM.SettingPropertyProvider
  766. {
  767. id: extruderEndGcodeProvider
  768. containerStackId: settingsTabs.currentIndex > 0 ? Cura.MachineManager.activeStackId : ""
  769. key: "machine_extruder_end_code"
  770. watchedProperties: [ "value" ]
  771. storeIndex: manager.containerIndex
  772. }
  773. }