New Feature (Probably?) Adds Full Component Access in LAF
-
@d-healey Thanks again for your feedback, Dave. A better way to describe what I'm trying to do—I want to access all of a components properties from its LAF. I've done the hard bit of changing the C++ code so I can get the component's ID from within the LAF. But I need to turn that name into a reference of the same name so I can use the GET and SET methods.
I guess I could write C++ wrappers for the specific component properties I want to access from the LAF, but it's not an elegant solution. Thanks again for your thoughts.
-
But I need to turn that name into a reference of the same name so I can use the GET and SET methods.
Get the reference in
on init
and stick it in an object, using the ID of the component as the key. -
@d-healey Thy art a genius, thank you. I will post my addition to my LAF tutorial, and upload. Specifically, the modification allows you to have contextual tooltips (i.e. separate tooltips for enabled and disabled states) by specifying both (with '|' as the delimiter in the object's property editor. Basically, a drop in replacement for tooltips.
-
-
@d-healey I guess I upload the new source code file as well, or is it better for me to tell people what code to add, where (to the C++)?
-
@clevername27 Make a pull request if you think it should be part of the codebase.
-
@d-healey I spoke too soon - I've only been able to get this to work when using quotes – could you please show me an example?
-
-
@clevername27 I can't give an example because I don't have your additions. Maybe you could post the code that isn't working and I'll see if I can spot any issues. BTW I think it's already possible to create tooltips in the way you describe for enabled/disabled components. Without using laf.
-
@clevername27 this is an example with custom made tooltip panel, and LAF knob with different tooltip.
Maybe it's not a good idea to get a reference to the component inside the laf, I remember Christoph talked about not using outside references and I don't know if that has changed?Anyway, you can accomplish to have separate tooltips for enabled/disabled (this is actually not disabling the component, because if you do, you'll get not response from the obj at all, no obj.hover)
What I did was in the Knobs callback, check if it's "text" property has a "1" or not.
A bit cumbersam yeah I know but...HiseSnippet 1455.3ocsW0maaaCEWJIJnRacncXG.B8Wx.dt1ccsCsHq9yTXD2DiZuhALrVvHQYwEYRMI5jZrVfgcU1QXWfcA1cXGgcC1djTxRtwwMM.SHHVjuO3u268ijOMNk6Sxx3oFl1SWlPLL+TqIKYhndQXJyXXe4Dw3PAmGKnIFcWlfyxHAFll69LoFl16Ynd9mm1EGiY9jxoLLdIm5SFQmSEkyNt8Qz33CwAjoz4Uz9AsG5yY83w7E.Z10poQB1+L7LxwXoZ6XYXt+f.pfmNQfEjLPmt7fkSh3Wvz5+RZF8zXhbPKiIfizSazKhFGLtHRyLLL2abYbuqNt+BqmSCnqluL9uiR.pzhp4.yc1FjZ8Q.IyJPZOMjtq0D+TZhnThDOeh0PlfjFhgTcUnn00Xm+XeqdbPClnwb7YjCSgAqrv6gMaVGA+q1Sbbfzcl.cNNEcDieJ5.TgcyHhd74IbFLvyUJzEzuTcodo73XRvVMbc0V2ESAB0TZxUZatboQN4u2HiHFCUEwK3KDTFwKbAyWP4LuY0b9EG6YREz7GO8OYMtHhJHfO.gAo3K5DSmwHASIuQ3IhnYMBvBbibxccjZJ.Gi3933t7ErfLul0pibiIgBITdWYZ6H1oivgUvueJA3.JSGw4m0gEbHgD6IsPqaiTxLZFTHNr.2tRL8Bt.mtbRLMfj5VGUFT0Q7S+IUjISX33jHL.QZBDMN126dH+Hh+YHZHhvv.GK.wSQAzL060QPt.QEHr.hJBxuHylgDPviRvovtJ.KZmW3gCjKYCkFGb.xskK5oHQ5BB5wnPbbFIeosgbDxUlsbK8r1SxgWUQU5aZPspNgJAjN8ivr.TVRLUganLygYP3zT7RsqE.nT9W5UO2bybq0PYjm6aUjEaHg3kGO0brgrmsJ0A11pQSXssEJZmP7CM+QX36brIPjstlMa7n0zrUtlyZDBmc0IN1ys4aBCen5wUGQN1E7zpjp7TZD+bRpLYBy7Xjq6SJ0NkjHI0dZurQRLUD0Qhr0o000bhZaldKW0ywwKHcxjiUjoFXfiBzYenZjRBVwnkaOkq6kHuZhqTEGnfczwmzE0qynQc6z6HGJKF1Dthuh3Loax2y6shVTGoPghGKKMqDjWEAr4VKmsA0K60OzPhpWJs2S6E.v.X114T57mxG8vwwmB2g3sFzTQiNflNXxzgG+LzzSPCNtS2QCP8GNQ8qLT2PDNPwq5q2j0Uv1RzhbrKBf7nLWFvBfPEHAMUDGkR9QX1LRf2Viu2ewupX8J.I36JQxwbA4Dlmpr37NGz6KJLbixVUcR2nX4M5oayPO1h4mRRqRJjJBW4s98n6e8tG0WmnpnHmMjQEmjPxGeHONPd+n78KeqqQdlFt+c2bDBuIT299Y429pOY1fBNYeKY0xPg87FW96eO4udpwUYa2EBAmor8ysd+5xZ9Q+bMvvcrVeGxFPy2MrObBjrmh7vCB4DRpfJyrl8ImCMko6vv1pOI6LAOAJ.qXZFl25CkAdSIposWVcvEz.QT4DupcDgNKpR6eCaWzKo48sjWgff+Jt+IWzaKlu35rBAFxMREsPUh280381E8KgYjXEbssxOksJhMLVVcv5H9O+sKg3us8FVqqWE9JxS+5O+gyS821ptM9P4Z1dw1pMsIan1Xb4tPg9e4AKhwh0aJV18et.XG9ZchJ61jkQEKq90AeDcJ2bqcJecg3csFSE9QaFi6rALBaX9+.i4eewssFDFR7Ek.bOqC+9a5GS7AVdcGxydNVjRA9f0wKlOAZbvm.qNC1b.N2xbG4AN5wMkikYfIDVfZv+BO4BaIGalKrUgPi4X+T9q80jO4WvbK0L.lXpOXy154xwnVEmPYY0rQSi4vGS8ZeeY3+kvQxa1l6eCr4qtA17fafMe8MvlGdCr4Q2.a9lsZi76X6rPvmq2N.SLdf5lBSS8IWJVnw+wXSdYL
-
I remember Christoph talked about not using outside references and I don't know if that has changed
It seems to not cause any issues. But I still avoid it generally, unless there is no alternative. In the case of tooltips I don't see any reason to involve laf, it can all be done with panels/timers/broadcasters already.
-
@d-healey thank you David, do you have Broadcaster example that listen to MouseEvents, hover?
-
@ulrik See the last post in this thread (with the link to Christoph's example) - https://forum.hise.audio/topic/6104/tooltip-panel-is-not-working-on-the-project-i-m-working-on/18
-
Thank you, @d-healey for your many comments. Thank you, @ulrik, for taking the time to write this code - an elegant solution. There's simply too many widgets in my script for me to alter the meaning of enabling, though. I must be the last person to learn that, while disabled states are passed to LAF functions, mouse-overs are only passed if the component is enabled. So, while I've got access to a component's tooltip within the LAF function, it's ultimately not useful. I think what I'm trying to do (separated tooltips for enabled and disabled states, by writing only a single function) just isn't what the built-in functions are for.
-
I think what I'm trying to do (separated tooltips for enabled and disabled states, by writing only a single function) just isn't what the built-in functions are for.
You can achieve this with other (non laf) functions.Oh I just reread what you said about the mouse events not triggering for disabled components. Seems this is also the case for broadcasters so indeed it won't work! -
@d-healey said in New Feature (Probably?) Adds Full Component Access in LAF:
Oh I just reread what you said about the mouse events not triggering for disabled components. Seems this is also the case for broadcasters so indeed it won't work!
Actually the broadcaster will work also for deactivated components.
HiseSnippet 1712.3ocsXstaSbDEd2jro3sEJHQ6um3ePWWBF6xkVAMPH2PQPRbqCTpPonw6N16TVOi0NyFGWDR7bzGi9DzGIdCZOmYu30WRTZTwJJwyYlyY9N2OSZEK8YJkL1xtxgiFvrr+Bm1iD5vMCobg0taYY+UNaDKoA9TklESNTJiz7AVaLZ.UoXAV11K9T7n1UVxx74iOdCZDU3yFSxx5kRtO6479b8XpsV+Y7nncnArC48Kc56t9t9RwlxHYB.qEcZXMf5+VZO19T7XK3XYu71AbsLtslpYJK6k1PFLpcnbnH87ujq3chX3hlVsAAkRdGYT.hXjp0lg7nfV4puxBjRqwFiESMFW2YOd.uf9XixUMaPFyQY6g8BSBuEm.dMKCuFkf2bfjcIHsTJjtlSa+X9.83cP774N6J.2SWJX1KCkzyZsvedImMkvID558ouksSLrnfCu62nwpD3W0dnqKX5UZxwzBW8uP09gfmeMx1hdbAqteLCzqRAEduysRUdP0GPppS4o5p.EZbOEP60U8k8GHEvcWcURU1w3WNx883kc6aSZK6yHwTQfjLfJXQyBfVHY35yU.ZPfgjW0xG.jMnDMxjZ.WQASLgqIJI96.ISI9FMIl4y3GyH8kIJFw.FkaY4TWwzdUYBj8.PncoQJVlToZM0OjPihHE5jhnkDc3DRjzoTFimNjqHvOTfbhlQ5Ji8Y.rhRzbof.pNJ6QxDReduPMYHEj.HT+DkV1m+GLhQB.ajHvlBhbPr72Y9ZUM2I8Q0SA3gxMyQ2dHn11nkd41udL8ShhJNhxqZ8usZMv0.TIaBJWGHcSg9pxFopY1fmwXCJouCjJNpFtnCauCdQ6seSqCZCdqWidii.dPlNzn.IBeiFODR6IcXDe3tXAjggLAbGwkjJb5PIPB1E+CX5Jr2n3PuJjewTFV75EI6PipMEhPCKIjGjcJSvEg2sru5DN37Q+pXToKXZaZPvy4fmT.A5kCT.6CJcRQHegB5UHqUSMd0beWkJtUlv7TbFze7TiFzJC4uxqF4lobV+jUI.mUpPvOmAO+ZIdFAlc793c8VIkhwXVCEDFJkFhebZUnwg3UJxIOS2EsKFUGRi5BtEECRWCLlZETfSY9VLK2GXL8nDyLRFe8bhd.wYxN8CohdvczOARy3omLBRiHZnCwbbLawhniXi8O2CKjMkSBw040I4VAit5RxSY0wIl70w.wOK+XUxPFTTAAcd9Z5EEVDQLqC.r+wLcRr.7OtUvLFv.bwBF9uDJX.xdTcXcZGkWQT3qabD4VHBfuTi7ijlMH23FtnvOOmETl2cJwSnUq1CmXyS.xobeylMlZuQY60rXOzxfQKqMoZ5UzdoVZ.NnWDuUl5L4ktqgl6JnXt4ZjpjDA3G0IBn0UzHrBB3dy5RDPdfW0BLEP0z54wqqg3.158o4FyzonELPf9mkPkbAyqHzpGDK4VoW8tPlCTT0qZiS5189lOFni6ALmNhiW5eT0GFx0F6Vu5Awzg6v0ZVvgrSzdyfqUMQnn99bIDQtgLQDn7ZfEw8ACQroy0cRaGlBb2hzYoXeolcfvy.R226Rldqtcm6dX+iXITCHdtaiCwEeVL5IR52gEuJzaOBBPxOHLYyjiK4b5iKUdZN+z1YkNnTrqfqOX.SbZy3Yk0CDFsZwLTAeSaFr5JYCV0NBppGawg4m9xIH0zx.7xi0ZMsPtZFGP20NxMjmXDy0lh3LB5iO15zPyFIZsTLAZRIMOz7hc2BBRv4FyzSP2Gvh0bzrZuE6XXH7zoHq3rES8Vsb.X8KlDvx9RmaSwIiuX95iJuXHOPGNlvusdHCGqYLkcWOKJFunmIjcxKXZkk5lON7L35bZcKgs8KgsO7SSgsOPmAaasdeJvtiMtn.lW24vhY37wqoCb2kw2xo36x4ylikGLf6JNkqXXP1x+Ul2BQ1xGksnP0Su5iyi4SWV9t9ryc.xX6veOrjcXc4z9nGMic3Qi8QesSKXRKUZOQnUX.msxJq.Oealml.OJRFjDQ0S9RI74gYa.0Cl34I3SPDPWqQkyE9e64SmWHdMmVbXjh4iwElCFgLrOEXL6QmW1Y6tcgw6GCvkb14UeZdgoUZuqdPG+XNF3ueR+1P2HeFb6BHjEqGau.FAlttQdHYalHvr3efOYa1DWamsYy7Ms5S8ikuwOsBG9r1KYn.XRXdQeEm8v0jhRZNNMp2vpO7B6236ip+sfh4ymmu6Bvyct.7b2K.O26Bvy8u.778W.d9gyjG7etwSRfWellN.DZsso0hs814EprWz5eAz1yMsD
-
@ulrik Not working in your snippet here.
-
@d-healey that's strange, it's working here
-
-
@ulrik Ah I see what the problem is. I was hovering over the knob, but you have to hover over its label. So still won't work in a lot of cases.
-
@d-healey you're right, and on the button it will not work at all :(
So it's not safe to use for all components -
@ulrik I just wanted to thank you again for taking the time to write this code. I ended up adapting it, and thank you.