HISE Logo Forum
    • Categories
    • Register
    • Login

    Custom look and feel component ID

    Scheduled Pinned Locked Moved Scripting
    laflook and feel
    43 Posts 6 Posters 2.3k 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.
    • d.healeyD
      d.healey
      last edited by d.healey

      The text property of obj when applying LAF to combo boxes holds the text of the combo box's value, rather than the text property. This means we have no way to distinguish between different combo boxes (unless we get clever/hacky with some of the other properties). Could we get the text property of the combo box added to its obj?

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

      ustkU 1 Reply Last reply Reply Quote 0
      • ustkU
        ustk @d.healey
        last edited by

        @d-healey shouldn’t be hard to fix, I’ll have a look sometime today...

        Can't help pressing F5 in the forum...

        ustkU 1 Reply Last reply Reply Quote 0
        • ustkU
          ustk @ustk
          last edited by

          @d-healey I just got an idea. What do you think of having a misc property for all the components, that is not linked to anything? So it would be just something we can get for any purpose we’d like, thinking of LAF customisation at the top of the list of course.
          So just a complementary text property... sounds cool enough?

          Can't help pressing F5 in the forum...

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

            @ustk I think we should get @Christoph-Hart opinion

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

            1 Reply Last reply Reply Quote 0
            • Christoph HartC
              Christoph Hart
              last edited by

              I think it might be better to actually include the ID of the component as obj.ID - this way you can either use a lookup table or clever name mangling to figure out what path to take in the LAF function.

              Adding a new property seems a bit verbose to me as it pops up on every component's property editor.

              ustkU 1 Reply Last reply Reply Quote 0
              • ustkU
                ustk @Christoph Hart
                last edited by ustk

                @Christoph-Hart I totally agree, but how can the ID be gathered? I tried to add it back in time but then you told me we cannot (easily?) reach the ID from a custom LAF... So I imagine it is not my level of knowledge to implement it, unfortunately 🙃
                I tried obj->setProperty("id", s.getComponentID());with no luck

                Can't help pressing F5 in the forum...

                1 Reply Last reply Reply Quote 1
                • Christoph HartC
                  Christoph Hart
                  last edited by

                  It would have to go through the JUCE::Component::setName() property - the scripting engine passes the ID as name to the component and the LaF fetches it with Component::getName() and then writes it to the obj parameter.

                  ustkU 2 Replies Last reply Reply Quote 1
                  • ustkU
                    ustk @Christoph Hart
                    last edited by

                    @Christoph-Hart Alright I'll give it a go...
                    One question though, you said once that accessing variables outside from the LAF is bad. So what about accessing a lookup table like you mentioned right above? assuming the lookup table is declared outside of course. Or should we declare it inside?

                    Can't help pressing F5 in the forum...

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

                      @ustk said in Custom look and feel component ID:

                      @Christoph-Hart Alright I'll give it a go...
                      One question though, you said once that accessing variables outside from the LAF is bad. So what about accessing a lookup table like you mentioned right above? assuming the lookup table is declared outside of course. Or should we declare it inside?

                      I've been accessing variables (consts) outside of the LAF functions without issue. I think it might be that Christoph meant you can't pass in additional parameters to the LAF functions... ?

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

                      Christoph HartC 1 Reply Last reply Reply Quote 0
                      • Christoph HartC
                        Christoph Hart @d.healey
                        last edited by

                        @d-healey have you tried multiple instances?

                        1. create a plugin instance with a laf that refers to an outside variable
                        2. create a second instance
                        3. leave both windows open and delete the first instance

                        This scenario was the most vurnerable setup I could find when debugging laf crashes.

                        d.healeyD 2 Replies Last reply Reply Quote 0
                        • ustkU
                          ustk @Christoph Hart
                          last edited by

                          @Christoph-Hart said in Custom look and feel component ID:

                          It would have to go through the JUCE::Component::setName() property - the scripting engine passes the ID as name to the component and the LaF fetches it with Component::getName() and then writes it to the obj parameter.

                          Oh, is this why text is automatically set from the ID when creating the component? getName() already returns the text property, this does not give the ID. Or is there something I don't understand? (what a question Greg... of course you don't...)

                          obj->setProperty("id", "Please fill in the form :)");
                          obj->setProperty("text", s.getName());
                          

                          @d-healey Yeah

                          I've been accessing variables (consts) outside of the LAF functions without issue.

                          Me too, but this goes back to when I had some crash issues to track down, the access to outside variable was a lead from Christoph. So even if it apparently works likes this, I'm afraid of instability we could prevent... You know, when Christoph says "be careful with this", I quickly get shaking legs 😰 😆

                          Can't help pressing F5 in the forum...

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

                            @Christoph-Hart said in Custom look and feel component ID:

                            @d-healey have you tried multiple instances?

                            1. create a plugin instance with a laf that refers to an outside variable
                            2. create a second instance
                            3. leave both windows open and delete the first instance

                            This scenario was the most vurnerable setup I could find when debugging laf crashes.

                            I hadn't tried in an exported plugin, just in HISE. I shall adjust my script accordingly!

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

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

                              @Christoph-Hart I just made a little test with external variables, following your steps. I found no issues. I was testing an SVG path in an external variable, I tried in Ardour and Qtractor, both seemed stable after I deleted the first instance.

                              HiseSnippet 1770.3ocsXs2ZbaDDWmiUI9ZuRBzO.h7WmgqFsqV8JgPb7qfo4gINMTZoDj0s2cpVmzgNcN0Dx2s9QpeCZmYeHsx2ESvPBXxs6ryL+lW6NiNqpLkubYYkUucd20K3V89A6yutnd1gyRxJrN8HXe67jI07k0VGb8hjkK4is506du.I2amssD+6ee1AI4IEo71srrdeYVJ+kYyypa28r8+kr77SRFyeW1biSy1+zzxhCKyKWAP4d1tVKRRuLYJ+0I3w1x1p22c73r5xpyqS.vX0a6CJGe84yJ+Xg77uOaY1E4bbAw5bPPxsOoLeLhXbWqCmkkO9LsIuzBjxYsNf6Ic.+j8qxFm0reqi3ABBNsbX5O5s0sAOhI7b+5gWOC3ssDdOz97zprE0sTPr881mVTyqlj.g.SXIOq0VOXf8gkvIJp2adxk7SpfEMbLLv0cjiuq6tOYP+A8q3ScVd0ziRpSDqU+14oN+Ag3Nh3FOxmLhDFOhx7FEDNh3yFQI3+GJV5FA+QE+QoTbKpq+HBC3k4iKiifcXhcnTFtCHPTXDOO4w6PTHeP.j.o36HZhq2Hpm6nXpV2cAGp5PfwHkhQV8.8yDBCfDEn3K+c.nGVnBOnL7i0KH9iFzWwjRj9LCQhPfBPFONUvKIxfWpGQpBzn.gF.FkGZTTRr1JDFVnORLVXEnSgDpDIJH3WlbxLII3Sa5DhFmBWYnqfOi3BI1sEOtspDwJIhnPNtQj.sC5q7ajPhYPPoWTNj.2NJkEqUpA0lfma.50i6RDLLweADjnHoANtejNmPHWRflXH5K7M4LNTI0l7ofN7FEIhwJdcij7RktTWBRTGIB8zBFrcSQqS3BB2.rHxrn0MFCBccAhnRCQg2vWGPvifBm0Mbph0TYBhtBQnLYzRRxqMJphwcx.BCahbXLUnvVPKyzfyIi7Jc1vruNcqMsrwSvTYoJH0jQSQGGb.rTLnSofqqzivnnGoS8C5LznR3sj.no1iBmlBng3EKSKjfPV3FGqPqnD2PLlBVFX0BVdOgvQA5PF5IdLMhi8z07hqNXFdA0sSs6KbsdrNwGojZVJuNTpsftvQljotRUj14aZLM4+wxTi1KMkdPQbQdknVxZOnRxAraH4a59wXuP1AFgM8JRrppLvLnqyIoMhlYluHJvT2a0voJUCjHUSqgsvlToH7VMOs2BYFr9lK3ITY4qPolEFtRw51ArLhwU7ZUBHDtTMnIbIC8ThQ9fwIT5f0jNzgcL0l0jNHSoP2J9P.SJPw6NgdZXgF.KtiAfu0p7E36U9dlu1Q7zuKfX.KBTvF7Sp6DWSr5mQ82.dz20JuHFr8VSnKoNFtLTXRVmYq7apqKMe2.ubIn4wqtu3Hy7TQKMsX20ixxWUjYLDCSWkhX77IyHKPuHfoeWUUE0j1IdhCdmW9n7MylkMKndJuoom3HiFXTs.HylwRnldLzIDqU9Y11g1Yopb6zph70o1NR9h8eIt0KVd8CMp4UkNc.gPHx6FzveNne2DB+l9DXshhF0fc89cE55pXMta2LN510VPzlEoAp6hHEgtBccUrN+C5a5oP2HVG39mh1fg4SVV6rHodFzIrtY5zJNzu+YvlCwlmQp6kWlLFZvdN1z7PUyyHQGGsPtJoxAFpBjywESyJ3Jw7h7xKRxksr+xxxKedw3S377gx1xAF1CZMOaIz09IqJRqyJKF9nwUIe7ckSmlyOXUccYwiF4LQSb5HmxK9qcGz+SnxcvE6cUR9JtySepiqyyblt2RdsbnqgHwrZ9b4RxtNO9VHSk1iCbjIv7bB6GscgB2KArF7.ed2mnwhSYwqKq4uoX3t8+T+c5+49N2jzjIajF5oqJyy4UajLNFY0sw3vhUyufWMxQX4MGDlmp6.a1e4A1LmmLUF3MNXYwoEY0uYAu3KMFmkJaAGnSgJ3n0hw49Q03bxnmU1Xbfa4Bhk.xliTa8qmhYSZAAxDzyBdUcFZB8NheELxsbNwcrOhu7x5xEhyNeQYAhfd2+qPs+ciJ+m2t+0MK1+22uMC.+PALZLKNHjF6aYjZHoDEDyb8YwVeLab8rVaHa+Y7roypM2wZ8obgYsKGuJOot6.33WcPQ.BxclzEmlsXYV80leUhuISk+0B2GZeVVc5rMi2s1.dgv52Z7p9FGCrOdxDdZcKX219je6a+Gzv5skqpyJl9pj5pLHMy90qleNjzjxAjTTvywBwdagkLx0t3ZzybNuXrXw+A+SQjfq6oHRzDslmjVU9gTYgF9UTtuXG.SEhOlzN1uBW6zTeYa6tmq07rwYeHMEcE+Lf8MyC8Nvi2cfG1cfG+6.OA2AdBuC7Dcq7feWsmuptbtrLA13riE2y0q2wEIPVlHiz5+AlYtqq
                              

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

                              1 Reply Last reply Reply Quote 1
                              • Christoph HartC
                                Christoph Hart
                                last edited by

                                Alright, it might be possible that I've fixed this already lol...

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

                                38

                                Online

                                1.7k

                                Users

                                11.8k

                                Topics

                                102.7k

                                Posts