MachineSettingsAction.qml 37 KB

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