the createHeadSprite script reveals some problems with GUI scripting
-
Why doesn't this forum have a quote feature?
"What do you find painful when using custom UIs"
Everything that comes after code. Finding the position, resizing, getting image width/height, all of the specifics. That's part of why you have a UI editor... you can't use it with custom graphics. You could make it possible if you improved the way HISE edits JSONs. As you can see I set many parameters via JSON just like when using a built in UI slider."I'd say that 99,999% of all Sliders will not need a continuousValue feature"
Continuous knobs are a feature found on real-world hardware interfaces. -
How do I make the continuous knob midi learnable?
-
Just set the
"enableMidiLearn"
property totrue
:) -
How would I take that continous knob script and make that default true until someone adds enableMidiLearn as false?
-
inline function createHeadSprite(name, x, y) { local widget = Content.addPanel(name, x, y); Content.setPropertiesFromJSON(name, { "width": 200, "height": 200, "enableMidiLearn": true, // <<== The magic happens here... "saveInPreset": true, "allowCallbacks": "Clicks, Hover & Dragging" }); [...]
or in your version:
inline function addContinuousKnob(name, x, y, json) { local widget = Content.addPanel(name, x, y); Content.setPropertiesFromJSON(name, json); ` widget.set("enableMidiLearn", true); // important to do this after the JSON restoring... [...]
-
waaaat, why wouldn't that override the json? by doing
widget.set("enableMidiLearn", true);
afterContent.setPropertiesFromJSON(name, json);
-
Oh, it looks like we need
Content.addPropertiesFromJSON(name, json);
otherwise you can't do default values. ADD rather than SET/overwrite -
IIRC
setPropertiesFromJSON()
already just overwrites the properties that are passed in. -
That means I can't put a default value. Please consider my earlier suggestion. Content.addProperties
edit: or maybe there's a way to combine two jsons before going to setProperties?
-
Please tell me you are going to do something to allow default values. I don't have time to learn the C++ API right now and so I'd like to create a library of GUI widgets in javascript.
-
Is there a way to combine JSONs?
Edit: No that wouldn't work, that would overwrite copy JSON properties unless something could be done about that to allow the 1st or last of the properties to be used.
-
I think the functionality is already there:
const var Button = Content.addButton("Button", 10, 10); Content.setPropertiesFromJSON("Button", { "enabled": false }); Content.setPropertiesFromJSON("Button", { "width": 160, "height": 30 });
This button will still be disabled because the second JSON doesn't overwrite the
enabled
property. This should allow you to set default values that won't be overwritten unless you explicitely add them in the JSON object. -
ok great, works!
-
I tried doing
"enableMidiLearn": "true"
(with and without quotes on true) in the json but it didn't allow the continuous knob to be midi learnable, maybe because I don't have a right click callback setup? I wouldn't know how to set that up for midi learn.