New Cabbage widget opcodes

You can now use the parent() identifier to specify which widget is another’s widget’s parent, for example:

<Cabbage>
form caption("Untitled") size(400, 300), guiMode("queue"), colour(58, 110, 182), pluginId("def1")
button bounds(180, 30, 80, 40), channel("toggle"), value(1)
</Cabbage>
<CsoundSynthesizer>
<CsOptions>
-n -d -+rtmidi=NULL -M0 -m0d --midi-key=4 --midi-velocity-amp=5
</CsOptions>
<CsInstruments>

ksmps = 32
nchnls = 2
0dbfs = 1

instr 1
    cabbageCreate "image bounds(0, 0, 100, 100), channel(\"image1\")"
    cabbageCreate "rslider bounds(10, 10, 100, 100), channel(\"slider1\"), parent(\"image1\")"
    kToggle, kTrig cabbageGetValue "toggle"
    cabbageSet kTrig, "image1", "visible", kToggle
endin

We got this feature for free as parent() was already used by Cabbage, but until now it was only ever used internally. I’ve only tested briefly, but it seems to work nicely.