HISE Logo Forum
    • Categories
    • Register
    • Login

    Script panel label keyboard entry?

    Scheduled Pinned Locked Moved Scripting
    55 Posts 4 Posters 2.7k 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.
    • Christoph HartC
      Christoph Hart @Christoph Hart
      last edited by

      @Christoph-Hart In the meantime you can just set parentComponent to an empty string, then it won't traverse the component list where it's currently crashing...

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

        I remove the parent property (I missed that before!) and now clicking the button no longer causes a crash, but no popup appears either.

        f5447f86-0059-4d5d-a1db-0fdc60f36ab3-image.png

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

        1 Reply Last reply Reply Quote 0
        • LindonL
          Lindon @Christoph Hart
          last edited by Lindon

          @Christoph-Hart so if we are here in UI widget property land - can I re-raise my feature request for using an array of values for the pop-up display in a slider?

          So simply put:

            {
              "type": "ScriptSlider",
              "id": "Knob1",
              "x": 114.0,
              "y": 65.0,
              "style": "Knob",
              "middlePosition": 3,
              "filmstripImage": "Use default skin",
              "linkedTo": "",
              "max": 5.0,
              "min": 1.0,
              "displayValues":["red","green","yellow", "blue", "orange"]
            }
          

          so if displayValues is blank (empty array), it would display as it does now....for reference the way knobMan does this is pretty cool....

          HISE Development for hire.
          www.channelrobot.com

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

            @Lindon you already have a getValuePopupText function so this would just duplicate the functionality with less flexibility.

            LindonL 1 Reply Last reply Reply Quote 0
            • LindonL
              Lindon @Christoph Hart
              last edited by

              @Christoph-Hart said in Script panel label keyboard entry?:

              @Lindon you already have a getValuePopupText function so this would just duplicate the functionality with less flexibility.

              er well....

              1. I cant see any documentation on the web for this call
              2. There's no inline documentation in the script editor
              3. when I call this
              const var SoundVol3 = Content.getComponent("SoundVol3");
              
              SoundVol3.getValuePopupText();
              

              it tells me Interface:! StdControls.js (54): function not found

              1. I'm not trying to "get" anything... I'm trying to make it display these words(colours here) when I move the knob...

              An example

              • I have dynamically assigned knobs for a range of effects, for one effect at least one of these knobs controls a setting who's values are: 3,4,5,8,10,12,16 - so I want a way to set the control to
                min= 1,
                max = 7,
                displayValues = [3,4,5,8,10,12,16]

              HISE Development for hire.
              www.channelrobot.com

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

                @Lindon I think it's this. Set rather than get

                146980b0-2beb-4966-8128-a269aee38067-image.png

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

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

                  @d-healey yup I meant that one.

                  1 Reply Last reply Reply Quote 0
                  • LindonL
                    Lindon @d.healey
                    last edited by

                    @d-healey said in Script panel label keyboard entry?:

                    @Lindon I think it's this. Set rather than get

                    146980b0-2beb-4966-8128-a269aee38067-image.png

                    thanks but this is very ugly now...
                    so given my example I need to (psudo-code):

                    if loaded_FX == XXXX
                    {
                          if control id == YYYY
                               control.setValuePopupFunction(myFunc(dbl){
                                    Switch dbl
                                          case 1:
                                                return "3";
                                          case 2:
                                                return "4";
                                       etc. etc
                                          case 7:
                                                return "16";
                              }
                    }
                    

                    which seems very klunky - -- hey ho.

                    HISE Development for hire.
                    www.channelrobot.com

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

                      @Lindon it‘s only ugly if you code it as ugly as your example. I can guarantee you that it will become a one-liner if you setup your data model right.

                      You need a way of customizing the value popup and the most flexible way is to define a function that returns a string.

                      LindonL 1 Reply Last reply Reply Quote 1
                      • LindonL
                        Lindon @Christoph Hart
                        last edited by

                        @Christoph-Hart said in Script panel label keyboard entry?:

                        @Lindon it‘s only ugly if you code it as ugly as your example. I can guarantee you that it will become a one-liner if you setup your data model right.

                        You need a way of customizing the value popup and the most flexible way is to define a function that returns a string.

                        but for 95% of the time I dont need to do this - so I can have this happen - in 1 line if you like - but then how do i make it UN-happen for my next slot loaded effect?

                        HISE Development for hire.
                        www.channelrobot.com

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

                          @Lindon just call the function with a non function object as parameter (empty string or whatever).

                          LindonL 1 Reply Last reply Reply Quote 0
                          • LindonL
                            Lindon @Christoph Hart
                            last edited by

                            @Christoph-Hart said in Script panel label keyboard entry?:

                            @Lindon just call the function with a non function object as parameter (empty string or whatever).

                            so:

                            control.setValuePopupFunction(myFunc(""){});
                            

                            ??

                            HISE Development for hire.
                            www.channelrobot.com

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

                              control.setValuePopupFunction(““)

                              LindonL 1 Reply Last reply Reply Quote 0
                              • LindonL
                                Lindon @Christoph Hart
                                last edited by

                                @Christoph-Hart said in Script panel label keyboard entry?:

                                control.setValuePopupFunction(““)

                                ..and this will then use the default "normal" values?

                                ..and can we get the documentation updated to reflect this "clear my function" stuff?

                                HISE Development for hire.
                                www.channelrobot.com

                                1 Reply Last reply Reply Quote 0
                                • A
                                  aaronventure @Christoph Hart
                                  last edited by

                                  @Christoph-Hart Looks like CHRISmas came early.

                                  Cheers, funky.

                                  I did have it hacked together with the method I described earlier and the keyPressCallback to hide the label again, but this is so much cleaner and less prone to any buggy behavior (also it can take alignment, so I can actually have that pink background I always wanted), with plenty of other use cases as well beyond what I wanted.

                                  Got it fully encapsulated with no issues. Happy to be able to pass relative parameters to it so that it adjusts to whichever control triggers it.

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

                                    Alright, took another spin at it and I found the most embarrassing code typo ever that caused an infinite loop and crash when using the parentComponent property. Should be fixed now.

                                    Here's a snippet that lets you open a text box for sliders (as soon as you set the sliderStyle property to "Horizontal" / "Vertical" you'll loose the text box so this brings it back with even more customization options:

                                    const var textInputBroadcaster = Engine.createBroadcaster({
                                    	"id": "text-input",
                                    	"args": ["component", "value"],
                                    	"tags": ["text-input"]
                                    });
                                    
                                    const var List = [Content.getComponent("Knob5"),
                                                      Content.getComponent("Knob4"),
                                                      Content.getComponent("Knob3"),
                                                      Content.getComponent("Knob2"),
                                                      Content.getComponent("Knob1")];
                                    
                                    textInputBroadcaster.attachToComponentMouseEvents(List, "Clicks Only", "");
                                    
                                    textInputBroadcaster.addListener("", "show textbox", function(component, event)
                                    {
                                    	if(event.shiftDown && !event.mouseUp)
                                    	{
                                    		var obj = {
                                    			"text": Engine.doubleToString(component.getValue(), parseInt(Math.log10(component.get("stepSize")) * -1)) + " " + component.get("suffix"),
                                    			"x": component.getGlobalPositionX() + component.get("width") / 2 - 30,
                                    			"y": component.getGlobalPositionY() + component.get("height") / 2 - 12,
                                    			"width": 60,
                                    			"height": 24
                                    		};
                                    		
                                    		var c = component;
                                    		
                                    		Content.showModalTextInput(obj, function[c](ok, input)
                                    		{
                                    			if(ok)
                                    			{
                                    				c.setValue(parseFloat(input));
                                    				c.changed();
                                    			}
                                    		});
                                    	}
                                    });
                                    
                                    A 1 Reply Last reply Reply Quote 3
                                    • d.healeyD
                                      d.healey
                                      last edited by

                                      I still don't see a text box.

                                      e971d187-630b-4f65-ab0e-0be3aa6c4a68-image.png

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

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

                                        @d-healey Hmm if I comment out the call to grabKeyboardFocus() I don't get an error but I still don't get an input box.

                                        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
                                        • A
                                          aaronventure @Christoph Hart
                                          last edited by

                                          @Christoph-Hart said in Script panel label keyboard entry?:

                                          I found the most embarrassing code typo ever that caused an infinite loop and crash when using the parentComponent property

                                          lmao

                                          2502e7d3-421c-4e72-836e-6a4bc92ef35b-image.png

                                          happens to the best of us

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

                                            @d-healey how does this happen? I don't hit that assertion, but it seems that it tries to add the text input to a component that isn't visible yet.

                                            The entire system was not trivial to implement because you have to send a notification from the scripting thread to the UI which resides on a completely different data model, but I think I got all edge cases sorted out with the last commit (and it's working fine here).

                                            d.healeyD 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            20

                                            Online

                                            1.7k

                                            Users

                                            11.8k

                                            Topics

                                            102.7k

                                            Posts