HISE Logo Forum
    • Categories
    • Register
    • Login

    New Feature (Probably?) Adds Full Component Access in LAF

    Scheduled Pinned Locked Moved Unsolved C++ Development
    24 Posts 3 Posters 1.5k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • clevername27C
      clevername27
      last edited by clevername27

      There's didn't seem a way (that I can see) to access a component's properties directly when referenced in an LAF function—you can only use LAF-specific ones (which differ for each component). Solution is to add a widget.id to the available member variables. Adding the C++ to do that was simple enough (and works), but only gives me a string with the name of the component—how do I, in Javascript create a reference with the name of a string? (And this assuming it's all a good idea.)

      Screenshot 2023-02-17 at 11.03.42 PM.png

      Screenshot 2023-02-18 at 12.06.51 AM.png

      clevername27C 1 Reply Last reply Reply Quote 0
      • clevername27C clevername27 marked this topic as a question on
      • d.healeyD
        d.healey
        last edited by

        What is the end result you're going for?

        Libre Wave - Freedom respecting instruments and effects
        My Patreon - HISE tutorials
        YouTube Channel - Public HISE tutorials

        1 Reply Last reply Reply Quote 1
        • clevername27C
          clevername27 @clevername27
          last edited by clevername27

          @clevername27 Thank you for your response - you always seem to have time to help. The lines of text with the green check mark work. The ones in red don't—they are the things I am trying to do. Essentially, I'm not understanding why the eval code doesn't execute as I expect (hope) it to.

          1 Reply Last reply Reply Quote 0
          • d.healeyD
            d.healey
            last edited by d.healey

            From my experience with eval() in HISE script it's mainly useful for evaluating mathematical strings. I don't think it can be used for running functions as in your example.

            Not sure if you've seen my video about eval so I'll post it here:

            Also for buttons the enabled property is available in LAF functions. obj.enabled I think is the one.

            I just noticed also the construction of your laf function registration is not using standard parameter names. This might make a difference to the auto complete. Also conceptually obj is not the same as widget.

            It should be:

            laf.registerFunction("drawToggleButton", function(g, obj) {
            });
            

            Libre Wave - Freedom respecting instruments and effects
            My Patreon - HISE tutorials
            YouTube Channel - Public HISE tutorials

            clevername27C 1 Reply Last reply Reply Quote 2
            • clevername27C
              clevername27 @d.healey
              last edited by

              @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.

              d.healeyD 1 Reply Last reply Reply Quote 0
              • d.healeyD
                d.healey @clevername27
                last edited by

                @clevername27

                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.

                Libre Wave - Freedom respecting instruments and effects
                My Patreon - HISE tutorials
                YouTube Channel - Public HISE tutorials

                clevername27C 3 Replies Last reply Reply Quote 1
                • clevername27C
                  clevername27 @d.healey
                  last edited by

                  @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.

                  1 Reply Last reply Reply Quote 0
                  • clevername27C clevername27 has marked this topic as solved on
                  • clevername27C
                    clevername27 @d.healey
                    last edited by

                    @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++)?

                    d.healeyD 1 Reply Last reply Reply Quote 0
                    • d.healeyD
                      d.healey @clevername27
                      last edited by

                      @clevername27 Make a pull request if you think it should be part of the codebase.

                      Libre Wave - Freedom respecting instruments and effects
                      My Patreon - HISE tutorials
                      YouTube Channel - Public HISE tutorials

                      1 Reply Last reply Reply Quote 1
                      • clevername27C
                        clevername27 @d.healey
                        last edited by

                        @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?

                        d.healeyD ulrikU 2 Replies Last reply Reply Quote 0
                        • clevername27C clevername27 has marked this topic as unsolved on
                        • d.healeyD
                          d.healey @clevername27
                          last edited by

                          @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.

                          Libre Wave - Freedom respecting instruments and effects
                          My Patreon - HISE tutorials
                          YouTube Channel - Public HISE tutorials

                          1 Reply Last reply Reply Quote 1
                          • ulrikU
                            ulrik @clevername27
                            last edited by

                            @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
                            

                            Hise Develop branch
                            MacOs 15.3.1, Xcode 16.2
                            http://musikboden.se

                            d.healeyD clevername27C 2 Replies Last reply Reply Quote 1
                            • d.healeyD
                              d.healey @ulrik
                              last edited by

                              @ulrik

                              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.

                              Libre Wave - Freedom respecting instruments and effects
                              My Patreon - HISE tutorials
                              YouTube Channel - Public HISE tutorials

                              ulrikU 1 Reply Last reply Reply Quote 2
                              • ulrikU
                                ulrik @d.healey
                                last edited by

                                @d-healey thank you David, do you have Broadcaster example that listen to MouseEvents, hover?

                                Hise Develop branch
                                MacOs 15.3.1, Xcode 16.2
                                http://musikboden.se

                                d.healeyD 1 Reply Last reply Reply Quote 1
                                • d.healeyD
                                  d.healey @ulrik
                                  last edited by

                                  @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

                                  Libre Wave - Freedom respecting instruments and effects
                                  My Patreon - HISE tutorials
                                  YouTube Channel - Public HISE tutorials

                                  clevername27C 1 Reply Last reply Reply Quote 2
                                  • clevername27C
                                    clevername27 @d.healey
                                    last edited by clevername27

                                    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. 😥

                                    d.healeyD 1 Reply Last reply Reply Quote 0
                                    • d.healeyD
                                      d.healey @clevername27
                                      last edited by d.healey

                                      @clevername27

                                      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!

                                      Libre Wave - Freedom respecting instruments and effects
                                      My Patreon - HISE tutorials
                                      YouTube Channel - Public HISE tutorials

                                      ulrikU 1 Reply Last reply Reply Quote 1
                                      • ulrikU
                                        ulrik @d.healey
                                        last edited by

                                        @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
                                        

                                        Hise Develop branch
                                        MacOs 15.3.1, Xcode 16.2
                                        http://musikboden.se

                                        d.healeyD 1 Reply Last reply Reply Quote 2
                                        • d.healeyD
                                          d.healey @ulrik
                                          last edited by

                                          @ulrik Not working in your snippet here.

                                          Libre Wave - Freedom respecting instruments and effects
                                          My Patreon - HISE tutorials
                                          YouTube Channel - Public HISE tutorials

                                          ulrikU 2 Replies Last reply Reply Quote 1
                                          • ulrikU
                                            ulrik @d.healey
                                            last edited by

                                            @d-healey that's strange, it's working here

                                            Hise Develop branch
                                            MacOs 15.3.1, Xcode 16.2
                                            http://musikboden.se

                                            1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            49

                                            Online

                                            1.7k

                                            Users

                                            11.7k

                                            Topics

                                            101.9k

                                            Posts