diff --git a/scripts/developer/utilities/lib/jet/jet.js b/scripts/developer/utilities/lib/jet/jet.js index 40563e4b2c..52c13c5279 100644 --- a/scripts/developer/utilities/lib/jet/jet.js +++ b/scripts/developer/utilities/lib/jet/jet.js @@ -10,7 +10,12 @@ // "use strict"; - // traverse task tree + // traverse task tree recursively + // + // @param root: the root job config from where to traverse + // @param functor: the functor function() which is applied on every subjobs of root traversed + // if return true, then 'task_tree' is called recursively on that subjob + // @param depth: the depth of the recurse loop since the initial call. function task_traverse(root, functor, depth) { if (root.isTask()) { depth++; @@ -22,6 +27,9 @@ function task_traverse(root, functor, depth) { } } } + +// same function as 'task_traverse' with the depth being 0 +// and visisting the root job first. function task_traverseTree(root, functor) { if (functor(root, 0, 0)) { task_traverse(root, functor, 0) diff --git a/scripts/developer/utilities/lib/jet/qml/TaskPropView.qml b/scripts/developer/utilities/lib/jet/qml/TaskPropView.qml index 2188df7cc0..af4cbb1c9a 100644 --- a/scripts/developer/utilities/lib/jet/qml/TaskPropView.qml +++ b/scripts/developer/utilities/lib/jet/qml/TaskPropView.qml @@ -1,5 +1,5 @@ // -// jet/TaskListView.qml +// jet/TaskPropView.qml // // Created by Sam Gateau, 2018/05/09 // Copyright 2018 High Fidelity, Inc. @@ -27,13 +27,37 @@ Prop.PropGroup { property var jobPath: "" property alias label: root.label - Component.onCompleted: { + function populatePropItems() { + var propsModel = [] var props = Jet.job_propKeys(rootConfig.getConfig(jobPath)); console.log(JSON.stringify(props)); for (var p in props) { - root.propItems.push({"object": rootConfig.getConfig(jobPath), "property":props[p] }) + propsModel.push({"object": rootConfig.getConfig(jobPath), "property":props[p] }) } - root.updatePropItems(); + root.updatePropItems(propsModel); + + + Jet.task_traverse(rootConfig.getConfig(jobPath), + function(job, depth, index) { + var component = Qt.createComponent("./TaskPropView.qml"); + component.createObject(root.propItemsPanel, { + "label": job.objectName, + "rootConfig": root.rootConfig, + "jobPath": root.jobPath + '.' + job.objectName + }) + /* var component = Qt.createComponent("../../prop/PropItem.qml"); + component.createObject(root.propItemsPanel, { + "label": root.jobPath + '.' + job.objectName + ' num=' + index, + })*/ + // propsModel.push({"type": "printLabel", "label": root.jobPath + '.' + job.objectName + ' num=' + index }) + + return (depth < 1); + }, 0) + + } + + Component.onCompleted: { + populatePropItems() } diff --git a/scripts/developer/utilities/lib/prop/PropGroup.qml b/scripts/developer/utilities/lib/prop/PropGroup.qml index 4465ec420e..544a687f70 100644 --- a/scripts/developer/utilities/lib/prop/PropGroup.qml +++ b/scripts/developer/utilities/lib/prop/PropGroup.qml @@ -13,20 +13,12 @@ import QtQuick 2.7 Item { Global { id: global } id: root - - // Prop Group is designed to author an array of ProItems, they are defined with an array of the tuplets describing each individual item: - // [ ..., PropItemInfo, ...] - // PropItemInfo { - // type: "PropXXXX", object: JSobject, property: "propName" - // } - // - property var propItems: [] - property var label: "group" property alias isUnfold: headerRect.icon - + property alias propItemsPanel: propItemsContainer + Item { id: header height: global.slimHeight @@ -89,7 +81,7 @@ Item { anchors.bottom: root.bottom Column { - id: column + id: propItemsContainer // anchors.top: header.bottom anchors.left: parent.left anchors.right: parent.right @@ -99,13 +91,22 @@ Item { } } - height: header.height + isUnfold * column.height + height: header.height + isUnfold * propItemsContainer.height anchors.leftMargin: global.horizontalMargin anchors.rightMargin: global.horizontalMargin + anchors.left: parent.left + anchors.right: parent.right - function updatePropItems() { - for (var i = 0; i < root.propItems.length; i++) { - var proItem = root.propItems[i]; + + // Prop Group is designed to author an array of ProItems, they are defined with an array of the tuplets describing each individual item: + // [ ..., PropItemInfo, ...] + // PropItemInfo { + // type: "PropXXXX", object: JSobject, property: "propName" + // } + // + function updatePropItems(propItemsModel) { + for (var i = 0; i < propItemsModel.length; i++) { + var proItem = propItemsModel[i]; // valid object if (proItem['object'] !== undefined && proItem['object'] !== null ) { // valid property @@ -118,7 +119,7 @@ Item { case 'boolean': case 'PropBool': { var component = Qt.createComponent("PropBool.qml"); - component.createObject(column, { + component.createObject(propItemsContainer, { "label": proItem.property, "object": proItem.object, "property": proItem.property @@ -127,7 +128,7 @@ Item { case 'number': case 'PropScalar': { var component = Qt.createComponent("PropScalar.qml"); - component.createObject(column, { + component.createObject(propItemsContainer, { "label": proItem.property, "object": proItem.object, "property": proItem.property, @@ -138,7 +139,7 @@ Item { } break; case 'PropEnum': { var component = Qt.createComponent("PropEnum.qml"); - component.createObject(column, { + component.createObject(propItemsContainer, { "label": proItem.property, "object": proItem.object, "property": proItem.property, @@ -147,22 +148,32 @@ Item { } break; case 'object': { var component = Qt.createComponent("PropItem.qml"); - component.createObject(column, { + component.createObject(propItemsContainer, { "label": proItem.property, "object": proItem.object, "property": proItem.property, }) } break; + case 'printLabel': { + var component = Qt.createComponent("PropItem.qml"); + component.createObject(propItemsContainer, { + "label": proItem.property + }) + } break; } } else { console.log('Invalid property: ' + JSON.stringify(proItem)); } + } else if (proItem['type'] === 'printLabel') { + var component = Qt.createComponent("PropItem.qml"); + component.createObject(propItemsContainer, { + "label": proItem.label + }) } else { console.log('Invalid object: ' + JSON.stringify(proItem)); } } } Component.onCompleted: { - updatePropItems(); } } diff --git a/scripts/developer/utilities/lib/prop/PropItem.qml b/scripts/developer/utilities/lib/prop/PropItem.qml index 00314512f2..339ff10422 100644 --- a/scripts/developer/utilities/lib/prop/PropItem.qml +++ b/scripts/developer/utilities/lib/prop/PropItem.qml @@ -16,7 +16,7 @@ Item { id: root // Prop item is designed to author an object[property]: - property var object: NULL + property var object: {} property string property: "" // value is accessed through the "valueVarSetter" and "valueVarGetter" diff --git a/scripts/developer/utilities/render/luci.qml b/scripts/developer/utilities/render/luci.qml index 89794b037e..85ca69e998 100644 --- a/scripts/developer/utilities/render/luci.qml +++ b/scripts/developer/utilities/render/luci.qml @@ -32,7 +32,7 @@ Rectangle { Column { width: render.width - Prop.PropEnum { + /* Prop.PropEnum { label: "Tone Curve" object: render.mainViewTask.getConfig("ToneMapping") property: "curve" @@ -44,9 +44,16 @@ Rectangle { ] anchors.left: parent.left anchors.right: parent.right - } - + } */ Jet.TaskPropView { + id: "the" + jobPath: "RenderMainView.RenderDeferredTask" + label: "Le Render Deferred Job" + + anchors.left: parent.left + anchors.right: parent.right + } + /* Jet.TaskPropView { jobPath: "RenderMainView.ToneMapping" label: "Le ToneMapping Job" @@ -59,7 +66,10 @@ Rectangle { anchors.left: parent.left anchors.right: parent.right - } + }*/ } } + + Component.onCompleted: { + } } \ No newline at end of file