Skip to content

Commit 4933c2c

Browse files
committed
you can now edit multi selected objects properties, does not work with scripts yet. Dynamic variables update rate has been optimized, they will only be updated on change.
1 parent 06c6b32 commit 4933c2c

File tree

4 files changed

+41
-16
lines changed

4 files changed

+41
-16
lines changed

Sources/src/Model/UI/CreateScript.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,10 +129,10 @@ export default class CreateProject extends React.Component {
129129
<br/>
130130
Templates:
131131
<div className="list-group">
132-
<a className={"list-group-item "+this.isActive("empty_template.py")} href="#" onClick={this.setTemplate.bind(this, "empty_template.py", "An empty python script", "fa fa-file-code-o", "Empty script")}><span className="fa fa-file-code-o"></span> Empty script</a>
133-
<a className={"list-group-item "+this.isActive("loader_template.py")} href="#" onClick={this.setTemplate.bind(this, "loader_template.py", "Create your own dataset loader.", "fa fa-sort-numeric-asc", "Data loader")}><span className="fa fa-sort-numeric-asc"></span> Data loader</a>
134-
<a className={"list-group-item "+this.isActive("classifier_template.py")} href="#" onClick={this.setTemplate.bind(this, "classifier_template.py", "Create your own trainer!", "fa fa-magic", "Classifier")}><span className="fa fa-magic"></span> Classifier</a>
135-
<a className={"list-group-item "+this.isActive("predictor_template.py")} href="#" onClick={this.setTemplate.bind(this, "predictor_template.py", "Use your trained model!", "fa fa-magic", "Predictor")}><span className="fa fa-magic"></span> Predictor</a>
132+
<a className={"list-group-item "+this.isActive("empty_template.py")} href="#" onClick={this.setTemplate.bind(this, "empty_template.py", "An empty python script", "fa fa-file-code-o", "Empty script")}><span class="fa fa-file-code-o"></span> Empty script</a>
133+
<a className={"list-group-item "+this.isActive("loader_template.py")} href="#" onClick={this.setTemplate.bind(this, "loader_template.py", "Create your own dataset loader.", "fa fa-sort-numeric-asc", "Data loader")}><span class="fa fa-sort-numeric-asc"></span> Data loader</a>
134+
<a className={"list-group-item "+this.isActive("classifier_template.py")} href="#" onClick={this.setTemplate.bind(this, "classifier_template.py", "Create your own trainer!", "fa fa-magic", "Classifier")}><span class="fa fa-magic"></span> Classifier</a>
135+
<a className={"list-group-item "+this.isActive("predictor_template.py")} href="#" onClick={this.setTemplate.bind(this, "predictor_template.py", "Use your trained model!", "fa fa-magic", "Predictor")}><span class="fa fa-magic"></span> Predictor</a>
136136
</div>
137137
<div className="panel panel-default">
138138
<div className="panel-heading"><span className={this.state.icon}></span> {this.state.templatename}</div>

Sources/src/Model/UI/Modules/AudioViewer.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,19 @@ export default class AudioViewer extends React.Component {
2121
}
2222
}
2323

24+
edit()
25+
{
26+
let fullpath = document.getElementById("audio_source_"+this.props.id).src;
27+
var open = require("open");
28+
open(fullpath);
29+
}
30+
2431
render() {
25-
return (
26-
<audio id={"audio_"+this.props.id} style={{width: "100%"}} className='media-object' controls>
27-
<source id={"audio_source_"+this.props.id}/>
28-
</audio>);
32+
return (<div>
33+
<audio id={"audio_"+this.props.id} style={{width: "100%"}} className='media-object' controls>
34+
<source id={"audio_source_"+this.props.id}/>
35+
</audio>
36+
<span onClick={this.edit.bind(this)} className="glyphicon glyphicon-edit" style={{cursor:'pointer'}}></span>
37+
</div>);
2938
}
3039
}

Sources/src/Model/UI/Properties.js

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ export default class Properties extends React.Component {
9696
return this.renderDataGrid(window.service.selectedObject.toJsonDescriptor());
9797
else
9898
{
99-
return <div>{Object.keys(window.service.selectedObjects).length+""} objects selected</div>;
99+
return this.renderDataGrid(window.service.selectedObject.toJsonDescriptor(), true);
100+
//<div>{Object.keys(window.service.selectedObjects).length+""} objects selected</div>;
100101
}
101102
}
102103
else
@@ -544,6 +545,11 @@ export default class Properties extends React.Component {
544545
if(window.service.selectedObject!=null)
545546
{
546547
//update selected object...
548+
for (let i in window.service.selectedObjects)
549+
{
550+
window.service.selectedObjects[i][field] = newVal;
551+
}
552+
547553
window.service.selectedObject[field] = newVal;
548554
this.forceUpdate();
549555
window.service.sceneUI.forceUpdate();
@@ -564,6 +570,12 @@ export default class Properties extends React.Component {
564570
{
565571
val = "True"
566572
}
573+
574+
for (let i in window.service.selectedObjects)
575+
{
576+
window.service.selectedObjects[i][field] = val;
577+
}
578+
567579
window.service.selectedObject[field] = val;
568580
this.forceUpdate();
569581
window.service.sceneUI.forceUpdate();
@@ -583,6 +595,7 @@ export default class Properties extends React.Component {
583595
script.params[field].value = document.getElementById(domID).value;
584596
}
585597

598+
window.service.updatedDynamicVars = true;
586599
this.forceUpdate();
587600
}
588601

@@ -611,6 +624,7 @@ export default class Properties extends React.Component {
611624
script.params[field].value = val;
612625
}
613626

627+
window.service.updatedDynamicVars = true;
614628
this.forceUpdate();
615629
}
616630

@@ -620,7 +634,7 @@ export default class Properties extends React.Component {
620634
this.forceUpdate();
621635
}
622636

623-
renderDataGrid(data)
637+
renderDataGrid(data, multi)
624638
{
625639
let counter = 0;
626640
let rows = []
@@ -696,10 +710,14 @@ export default class Properties extends React.Component {
696710
{
697711
if(window.service.selectedObject.scripts.length>0)
698712
{
699-
cols.push(<div className="" key={counter+"_1"}>{this.renderScriptsPanel()}</div>);
713+
if (multi)
714+
cols.push(<div className="" key={counter+"_1"}>Multi edition is not avaliablefor scripts yet.</div>);
715+
else
716+
cols.push(<div className="" key={counter+"_1"}>{this.renderScriptsPanel()}</div>);
700717
}
701718

702-
cols.push(<a onClick={this.showFilePicker.bind(this, "py")} className="list-group-item list-group-item-action list-group-item-info">Add a script <span className="glyphicon glyphicon-plus"/></a>);
719+
if (!multi)
720+
cols.push(<a onClick={this.showFilePicker.bind(this, "py")} className="list-group-item list-group-item-action list-group-item-info">Add a script <span className="glyphicon glyphicon-plus"/></a>);
703721

704722
}
705723
else

Sources/src/core.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,11 @@ function loop()
102102
{
103103
if(window.service.builder && window.service.enabledDynamicVars)
104104
{
105-
if(dcounter>10)
105+
if(window.service.updatedDynamicVars)
106106
{
107107
window.service.builder.updateDynamicVariables();
108-
dcounter=0;
108+
window.service.updatedDynamicVars = false;
109109
}
110-
else
111-
dcounter++;
112110
}
113111

114112
window.service.zoom = lerp(window.service.zoom, desiredZoom, 0.1);

0 commit comments

Comments
 (0)