HISE Logo Forum
    • Categories
    • Register
    • Login

    Trigger Panels Off/On via button

    Scheduled Pinned Locked Moved Scripting
    t h
    11 Posts 2 Posters 502 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.
    • larryseyerL
      larryseyer
      last edited by

      I have 4 panels controlled by 4 buttons... they work great. No issues.

      However, I want to hide all 4 of the panels when I hit a 5th button which is not part of the 4 original buttons (for a logo screen)

      In my custom callback I have the following code:

      It hides the panels just fine, but will not restore the panels visibility when the logo goes away.

      What am I doing wrong?

                      if (value)
                      {
                          for (i = 0; i < NUM_TABS; i++)
                          {
                              panels[i] = Content.getComponent("StylesPanel" + (i + 1));
                              buttons[i] = Content.getComponent("Rhythm_Button" + (i + 1));
                              values[i] = panels[i].get("visible");
                              for (l = 0; l < panels.length; l++)
                              {
                                  panels[l].set("visible", false);
                              }
                          }
                          panels[NUM_TABS] = Content.getComponent("RhythmDisplayNumber");
                          panels[NUM_TABS].set("visible", false);
                      }
                      else
                      {
                          for (i = 0; i < NUM_TABS; i++)
                          {
                              if (buttons[i].getValue() == 1);
                              {
                                  panels[i].set("visible", true);
                              }
                          }
                          panels[NUM_TABS] = Content.getComponent("RhythmDisplayNumber");
                          panels[NUM_TABS].set("visible", true);
                      }
      

      Larry Seyer is an award-winning musician, audio engineer and producer who has worked with many artists across various genres. Every Thursday at 7PM he live streams on YouTube, Twitch and Rumble.

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

        You can simplify this a lot. Also it's not good practice to grab component references within a callback, that should be done once, in on init, and the references stored in consts

        HiseSnippet 1035.3ocsV80aaaCDmx1JqxasnEne.XCFJbPKRs255FPW2bic7lwVRLlSCJvvZGsDsMQnHEjnRiwP+FsOW6487dI6nnjobsqiiGldvv2++cGOdGGDK8oIIxXji2oyhnHmOyc3LgZZmoDl.0uKx4NtGQRTzXrg0AyhHIIz.jiS0ePyvwqFJ66u+9CHbhvmZYgPmIY9zelExTVtCZ+SLNuGIfdJKrj1OsceeonijKSA7T0sIJh3eNYB8XhVsJtHmcNLfojwCUDEMAz4.YvrgSkuSXz+LVBaDmpIZgFBNxvF0YJiGLnHWSPHmZCrYdUSlee2iXAr47sUf6lI.asnbMvox5fTqa.jbJAoZFHcO2g9wrHkUhFOepaeAbfLl.k5xPwnKpxeV0siDzPn1OjbNsWLPL2hFOqYyGige1640q+jm7.bjfeJYTcnxmnxIvu.W3fIT0K47NxvHo.nSZrqQkcKLejR7ir.JnTtKrLVzMy8QicspncikZ+DsZBUrj2gv4ifS+FRgUdtLcnYBNSPwiSE9JlTfWgZM7Kh3iwWP3oz8p+G08fP.vO6TgwYpYM.u894ohsRXHVakvnRVkXrLF23RLSjaWVnt7ilOfF1b48ejrwpzpyDtzmvgPFPuDfowf8yHOYr0BH.d08xvGCTq4ywL72VnMmJlnlBrdzi1qtmmg6ux9MMvOSGnF4t+EXlNMWW0qWN3SVJaV1HM72LHY51xfDbmpndXA5jBftG9gOD+fR8RVIZLVpzdrTQOQX.A.d7GJZ73UJKO1bZ7JEqGkEuNCaHRCGQiKeBpUDtqu3.jc1rAH9l1xRJJE8EL0IQzb5dRdfdvf9+KOtAk2WCCdpliP3eprwN2IeryAoJkTfXA50B1RKJKCJOkGsAdvy0bp0rvbmJ2DyZM2rpnW0uKQQziLySBHwhnwJlt94zkdArywL.0ysKM4bkLB43N+pKx4SLg61EiWIBJOOZlFtlnKs4220dlk3MseGKPME7myeAjSorISUZp+AnXJZXw9KucPnqtJu5LOx255hbqRQFGukQ9UWc+rHeQQuCTzJAhZa1wrEH+dRYfzs8l4L6Idoh4m+ewSkKNnfOvSKu9DVbKCR4D0hay0OaIW.bCcgUn50jhDXFU4m0bCVw2bsq32THdO2ALk+zUiwJq.ivUg+OvX9Cits6giGS8UV.Vys2q21WAcMg+WjoJlXxQDULCNrcONMbHzU6SgnKfKKI5N9J5KUF5lZZcEXHUDjQbE7kKrkl1IWXqBgnPher7s9lgO5mdcqLN.lDYuzzCdxKPias7jtP3kfu02eQWsjgew1Z3WtsF9zs0vuZaM7Yaqge81Z32b8Fpen9KSUxPy0FD5nAGlsqvw4PAA5.y5VQ+KvzBcZB
        

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

        larryseyerL 2 Replies Last reply Reply Quote 0
        • larryseyerL
          larryseyer @d.healey
          last edited by

          Thank you David!

          You are awesome!

          L

          Larry Seyer is an award-winning musician, audio engineer and producer who has worked with many artists across various genres. Every Thursday at 7PM he live streams on YouTube, Twitch and Rumble.

          1 Reply Last reply Reply Quote 1
          • larryseyerL
            larryseyer @d.healey
            last edited by

            @d-healey

            Thank you for the code... it is much simpler.

            However, using this code leaves the last button activated instead of the first.

            Any idea how I can have the first button be activated/highlighted and NOT switch to the last one?

            //! pnlTab
            const pnlTab = Content.getAllComponents("StylesPanel");
            
            //! btnHideAll
            const btnHideAll = Content.getComponent("SplashScreenTriggerButton");
            btnHideAll.setControlCallback(onbtnHideAllControl);
            
            inline function onbtnHideAllControl(component, value)
            {
                setTabVisibility();
            }
            
            //! btnTab
            const btnTab = Content.getAllComponents("Rhythm_Button");
            
            for (x in btnTab)
            {
                x.setControlCallback(onbtnTabControl);
            }
            
            inline function onbtnTabControl(component, value)
            {
                local index = btnTab.indexOf(component);
            
                for (i = 0; i < btnTab.length; i++)
                    btnTab[i].setValue(index == i);
            
                setTabVisibility();
            }
            
            //! Functions
            inline function setTabVisibility()
            {
                for (i = 0; i < btnTab.length; i++)
                {
                    pnlTab[i].showControl(btnTab[i].getValue() && !btnHideAll.getValue());
                }
                rhythmDisplayid.set("visible", !btnHideAll.getValue());
                spashScreenNameID.set("visible", btnHideAll.getValue());    
            }
            
            

            Larry Seyer is an award-winning musician, audio engineer and producer who has worked with many artists across various genres. Every Thursday at 7PM he live streams on YouTube, Twitch and Rumble.

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

              @larryseyer said in Trigger Panels Off/On via button:

              However, using this code leaves the last button activated instead of the first.

              Do you mean when you activate the hide all button you want button 0 to be activated?

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

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

                @d-healey

                No.

                I'll explain further...

                The splash screen happens when the program loads.

                AND

                It happens when the logo button is clicked on.

                When program first loads, I want button 1 to be active.

                But when the logo button is clicked, I want whatever button was active to return to being active.

                Larry Seyer is an award-winning musician, audio engineer and producer who has worked with many artists across various genres. Every Thursday at 7PM he live streams on YouTube, Twitch and Rumble.

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

                  @larryseyer If the buttons are set to saveInPreset then you should be able to set the first button on, save your project, and when it loads that button will be on by default.

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

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

                    @d-healey

                    I understand that... and it does.

                    But when I run your code, and click on the logo button, button 4 activates even if button 1 was activated before the logo button was pushed.

                    I want whatever button was active before to return to being active when the logo is pressed a 2nd time and the splash screen goes away.

                    Maybe a better way to explain this is I want to 'push' the state of the buttons onto a stack/array and then 'pop' their state after the splash screen goes away.

                    Larry Seyer is an award-winning musician, audio engineer and producer who has worked with many artists across various genres. Every Thursday at 7PM he live streams on YouTube, Twitch and Rumble.

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

                      @larryseyer said in Trigger Panels Off/On via button:

                      But when I run your code, and click on the logo button, button 4 activates even if button 1 was activated before the logo button was pushed.

                      Is the logo button the one I called btnHideAll?

                      I'm not seeing either of the other buttons being affected by this

                      Peek 2024-06-30 00-24.gif

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

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

                        @d-healey

                        No, it's a little more complicated than that.

                        I just became a Patreon supporter highest tier.

                        Can I send you a message there with more detailed code?

                        Larry Seyer is an award-winning musician, audio engineer and producer who has worked with many artists across various genres. Every Thursday at 7PM he live streams on YouTube, Twitch and Rumble.

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

                          @larryseyer said in Trigger Panels Off/On via button:

                          Can I send you a message there with more detailed code?

                          Sure but the less detailed the better, by that I mean anything that isn't need to demonstrate the problem will make it more complicated to solve.

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

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

                          33

                          Online

                          1.7k

                          Users

                          11.8k

                          Topics

                          103.1k

                          Posts