Syntax for Setting and Getting Array Data From a Panel
-
@aaronventure I've never thought about that, maybe you're right.
-
@Christoph-Hart how to set an array, then? How to specify which element I'm setting? setValue only expects one parameter.
-
@aaronventure that parameter can be an array or an object (the only illegal type is string because that can cause weird number conversion issues).
-
@Christoph-Hart @aaronventure Would this be a better implementation?
I store the min, max and range properties at init (so no more looking at properties at runtime)HiseSnippet 1600.3ocsWstSabDEdWfsJ1sQpQp+p+Z59ip0EXw1gP.Sog6ozvEKbZZpPnngcGudJqm0Z2wFPI7rzGi9Z02f1yYlc8NDLHDp0Bg8LmKy2bNemYNS6zj.VVVRpkck2d0.lk8W4z4Jgr2V8nbg0daaY+0NGSEQLRmXdHKkzzZyqFPyxXgV11S+ZTK6JyXo972uZSZLUDvJmxx5cI7.1979bY4rsW+M733cogr2x6an8hquWPhXqj3jg.hl1ot0.Zv4zH1gTTsobrr+hcB4xjzNRpjkYYOylIgW0oWxEBs9uimwOKlgCZX0Abjd5cShCQDiyZsUOdbX6hcdlE3k1kwgo0wguw4.dHe77lwCT.ozBy3g8T2DdSeC30vDd0Mf2DfjsAjlQCom4zIHkOPVJAwyW5rmPxR6RgvtITz5ZM0e8DmsR.MDR+9zyY6lBCFag2R0qOGA9WsUqVcgEpb7FG95cHc1eus24XR6MNbm8qL+C6SUHwkIIJtR6iIqQ5NTDH4IBunZU+X0JinoDJLsrGOyOhI2OIfFuYxPQXlGt5Upn0YjgNuiFOj4gB0x5yEuGDSOo4oKLxOUQK+Ah2H+QnhmT+Tx7jQ9fVnIJCnWdeFzvzfpUh7yXRM4yq.BdtmEomxsF50H+t.y8XD2rviYARvmwLuSfnH7GtP3+e9oKrH7i5Zna5W8WY9Wvk81HdPOpwJwkr9Eq0b5fPHUR86kLBJ7dEogecRKRc+kuWjfAIEXvM+73nYadaLgQGoQn1yUxtT5VD3xF1sK+RTte1vyxjobQjmzmCq0kG00ysUK2Znak9wLQjrWgcp35FYuE7EX7.ZZFC3ZFYnZjYKb9rD24HtvW2RsFFpUhVsOKCK8SFlw1FJsfPi451BPUJaPLRuQfNq1QvZ4d67wM2+2LSGlRuXiXdjfEhN1C0.hjfiBfpoTV3lIRYRezqWC7GiBfC1ZSyJ.1HP+wUA2EC+yS3qQT1oGspo7xcdgN.TiTNg2knWN+fXdv4rPxm9jgN0pVAPQQpBLunpXgwP523gxdd0f5DsYXhRUinqQu8J.9T4TkDiZw0PuONghJXrEB5oV10Tv3GIFl8JhKrXtPZzEXvt3phKaEVbF6tbxATYOe5YYFK+7vOpAd9VhZjKZBqy0Uy2e2dIVSqsZaXtG09WEC8fYmSGplybmidt.7Fm7LISK7qxMzKyOVTui0HITQVtdLeAH5vESRubNXNIDyuJhX9k1qQJtBHBY98GjHfAdtF5fr3pFiwZj1nqgSXjbAyK+jcPsOSqCP13Vz33yf6p8J3+n6pVkKhAaGWIPRDFFiXJMI1Kn.PyoqiUUJpz.bsWRW8jjuCRAIm8GvAct4r3X7JD7RAX+M1G5hYUtZ0RcnWNAcfrtRmx4yJpH+nxCsHpboRyVnSfeqxW5QyqkpfGLyIpgv7md83bjNuifE1rYIwL+AoX5RYS4ghqduJn4P.4DyvOfDo93MUrcbZYRAdUJxH0bXhjcjvSE9qdcUxmKpa2IJK2awrzIJF6vK89LzSLr+YrTyjOpHz1yM6kx4t6kxrUu.c.xPwDwdBt7nALwc0.nUdTE66JGUfpRUWWOsnqKpfEawCwYLhkVJTaY+FmeoyQGVvap6WeLuoY855gETmwSLl4r7KTSrxRvWmdsk0ut21vgOEnA.F.1ArTIGiC1ayFAsTq6Irhy1rrykICT5lyGft3eXX+xxVu+80uxbvE3s.kSvWuGiG0ynE9eZ8x1UvlPWtwJMZ1b4UV1BnbIWTP7.79sNagWTjMG4mU2q88jsgahhfNJrJuyEe3whMWYwUV5kMW4EJAnWU8i1pU+LKHVNdwW+OWOiNBZYncJC35vVeJqa2tLzndR3vXp7lcuiOYIW.PCuQKyXawhLt7Jymz7eVK8OTH9Lm1bYPuIiwol.FAdx+GXL+gPO0YmtcgScKA3LN699+ed0ik9xlH3lwTNjucNbX+N.6HfAqt.3v3w.PxFMUMtNNFi.cXhP0f+A9jKrAN1NWXiBg.SJHM4CA5xb7oVOQMCfIg5UlUbN.GSZTTZ63.kkV8gW88gf.b6OObFxjso4ivlm+HrYwGgMu3QXyROBad4ivlkuWavGbuwPnUac4.LQ6cTGPZauifBLKEKz5eAieFzFA
-
@Christoph-Hart Alright, so what does it look like?
I feel like I'm miscommunicating this -- I can't figure out how to write these two lines of code.
What's the syntax for storing an array in a panel with .setValue(), and for getting it?
-
@ulrik Sure? I mean, the other one also only gets executed once perhaps, at the very first run while it's undefined.
This is what I was referring to:
https://youtu.be/fV9hOZrNO_g?t=1360 -
@aaronventure said in Syntax for Setting and Getting Array Data From a Panel:
I have a panel that I want to use to create a horizontal range slider.
Why not use the built in range slider?
-
@d-healey said in Syntax for Setting and Getting Array Data From a Panel:
@aaronventure said in Syntax for Setting and Getting Array Data From a Panel:
I have a panel that I want to use to create a horizontal range slider.
Why not use the built in range slider?
Is it not broken?
-
What's the syntax for storing an array in a panel with .setValue(), and for getting it?
setValue([0.5, 0.8]); min = getValue()[0]; // case that panel is not initialised needs to be handled too though...
-
@ulrik said in Syntax for Setting and Getting Array Data From a Panel:
Is it not broken?
I never used it. But I just tried it and seems to be broken. I suggest we nag Christoph to fix it instead of hacking a panel (unless you need the panel method for some particular reason). :)
-
@d-healey The default controls don't let me define custom modifier behavior (ctrl, alt, shift), don't have the useful .data functionality and don't have the mouse callback.
-
@aaronventure said in Syntax for Setting and Getting Array Data From a Panel:
define custom modifier behavior (ctrl, alt, shift), don't have the useful .data functionality and don't have the mouse callback.
Broadcaster would solve those issues I think (well not the data one).
-
@d-healey True, but I still can't disable built-in modifier behavior.
-
@Christoph-Hart Thanks.
Is there a way to set only one element, or do I have to be defining all elements every time I'm setting the value?
Is this done by setting these value somewhere else, like a local var which is an array
local tempVal = [];
and then passing the array itself every time I setValue
setValue(tempVal);
?
-
local v = this.getValue(); v[1] = "New Value"; // technically this is not required because the value is already == v this.setValue(v); // this will fire the notification that the value has changed. this.changed();
-
Got it working. Thanks.
-
@aaronventure FYI, I've added the ability to reassign modifier / mouse click types to different events.
Docs:
-
@Christoph-Hart thanks! I was just about to request this :)
-
@Christoph-Hart Nice! A few questions:
1. This is just for re-assigning default modifiers, right? Or will mods.shiftDown return 1 if shift is down, therefore letting me do whatever?
2. Is the CTRL modifier the same for Windows and Mac, or is the Ctrl on windows firing the CMD modifier?
3. Given how we're creating an object here and there's no .data for a slider, what's the best way to approach encapsulation? I can set everything up within a single function, sure, but if the in-function reference is a local variable, I can't access it from e.g. the control callback in case I have one control that needs to do something else other than what I set up.
In my case, I'm using the panel, and have a sizeable function that handles everything: I have a few timers for various types and parts of an animation that happens on user action, and these timers are stored into widget.data.someTimer, so I can access them from anywhere. Moving to a slider would require figuring out how to keep the same functionality of the timers, while keeping the workflow the same (set up one type of control with a single function, passing relevant parameters).
-
@aaronventure said in Syntax for Setting and Getting Array Data From a Panel:
This is just for re-assigning default modifiers, right? Or will mods.shiftDown return 1 if shift is down, therefore letting me do whatever?
Yes, you can reassign "reset to default", "enable fine mode", "show MIDI learn" and "show text label" to any combination of modifier keys / mouse clicks. If you want to add custom behaviour, use a broadcaster.
Is the CTRL modifier the same for Windows and Mac, or is the Ctrl on windows firing the CMD modifier?
I'm fairly confident that command key flag will also be set by the ctrl control on Windows, but I'm not on Windows right now so I can't confirm it.
Given how we're creating an object here and there's no .data for a slider, what's the best way to approach encapsulation?
Not sure, need more info, but pretty much anything can be done now with broadcaster and modifier keys reassignment and making it scalable / encapsulated is just a question of finding the right data layout for your use case.