HISE Logo Forum
    • Categories
    • Register
    • Login

    Menu & Sub-Menu

    Scheduled Pinned Locked Moved General Questions
    18 Posts 5 Posters 1.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.
    • JayJ
      Jay
      last edited by

      Can I do a Menu and a Sub-Menu?

      Ex: PIANO
      - Piano AC
      - Piano AC 2
      - Piano AC 3
      GUITAR
      - Guitar 1
      - Guitar 2
      - Guitar 3

      Ect?

      Joansi Villalona

      1 Reply Last reply Reply Quote 0
      • Dan KorneffD
        Dan Korneff
        last edited by

        I wonder if you can do this in a combo box?

        Dan Korneff - Producer / Mixer / Audio Nerd

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

          Combobox can't do it, but if you use a ScriptPanel, you can use a special syntax to create advanced popup menus:

          Content.makeFrontInterface(600, 500);
          
          const var Panel1 = Content.addPanel("Panel1", 0, 0);
          
          // Enable popup menus
          Panel1.set("allowCallbacks", "Context Menu");
          
          // Align the menu to the panel width (nicer)
          Panel1.set("popupMenuAlign", true);
          
          /** This function returns the correct string for the popup item result.
          *   
          *   Headers & separators do not have a result, so there is no 1:1 correlation
          *   between the array index and the result. This function skips headers & separators
          *   (and also removes the submenu name if desired).;
          *
          *   Arguments:
          *    - array:       the popup item list.
          *    - value:       the item result. Just pass in the value from Panel.getValue().
          *    - removeSub:   removes the submenu name and only displays the item string.
          */
          inline function getPopupmenuItemText(array, value, removeSub)
          {
              if(value == 0)
                  return "";
              
              local i = 0;
              local index = value - 1;
              
              for(element in array)
              {
                  if(element.indexOf("**") != -1)
                      continue;
                             
                  if(element.indexOf("___") != -1)
                      continue;
                      
                  if(index == i)
                  {
                      // Remove the menu name
                      if(removeSub && element.indexOf("::") != -1)
                          return element.split("::")[2];
                      else
                          return element;
                  }
                  
                  i++;
              }
              
              return "";
          }
          
          Panel1.data.items = [
          "Menu 1::**FirstHeader**",      // Use MenuName::MenuItem syntax for submenus
          "Menu 1::FirstFirst Item",
          "Menu 1::~~Deactivated~~",      // ~~Name~~ creates a deactivated item
          "Menu 2::**SecondHeader**",     // **Name** creates a bold (unclickable) section header
          "Menu 2::___",                  // ___      creates a seperator line
          "Menu 2::FirstSecond Item",
          "Menu 2::SecondSecond Item",    
          "Hidden Item"                   // Top level items will be hidden if you use sub menus
          ];
          
          // Makes a string from the array
          const var itemString = Panel1.data.items.join("\n");
          
          Panel1.set("popupMenuItems", itemString);
          
          Panel1.setPaintRoutine(function(g)
          {
              g.fillAll(Colours.darkgreen);
              g.setColour(Colours.white);
          	
              // Can't help myself...
              g.setFont("Comic Sans MS", 16.0);
              var text = getPopupmenuItemText(this.data.items, this.getValue());
              g.drawAlignedText(text, [0, 0, this.getWidth(), this.getHeight()], "centred");
          });
          
          Panel1.setMouseCallback(function(event)
          {
              this.setValue(event.result);
              this.repaint();
          });
          

          The getPopupmenuItemText() function is necessary because the result ID does not match the indexes - you don't need to understand what's going on in there, just reuse it :)

          JayJ ? 2 Replies Last reply Reply Quote 3
          • JayJ
            Jay @Christoph Hart
            last edited by

            @christoph-hart 0_1535146702844_Screen Shot 2018-08-24 at 5.37.48 PM.png

            is giving me this error

            Joansi Villalona

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

              @jay You've only given it two parameters, the function definition requires 3. Seems pretty self explanatory to me.

              inline function getPopupmenuItemText(array, value, removeSub)
              
              JayJ 1 Reply Last reply Reply Quote 0
              • JayJ
                Jay @d.healey
                last edited by

                @d-healey Yeah, but I didn't do the example @Christoph-Hart did

                Joansi Villalona

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

                  @jay You'll need to post your definition for that function. But whichever version your using the error is telling you it wants 3 parameters and you've only given it 2.

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

                    @d-healey Is there any way that I can use this menu&submenu script to load instruments out of the sampler?

                    Joansi Villalona

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

                      @jay I haven't tried the code but it's just a menu so you can get it to do anything a menu can do, including loading sample maps.

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

                        @d-healey Let's say I want to connect it like this snippet down here, Can you show me how to do it please?

                        HiseSnippet 2932.3oc6aEtaabbD9njOWqqQI1A4G8Gs.aIZcIkknHoUrcjfQjDEsMSLkHDkcBfqgwp6VRtwGukX26jDqgE5qR+W+YeD5CPA5iPeExaP5r6dGu8jHoDscZBREgivc6Nybe6NyNy2tKRKNykHDLtUtENX3.hUtOxt8vfvd05goAVM1wJ2Ga2DKBIbjtosGN.KDDOqb4l+wxFxsv0rT+99ubarONvkj1jk0yYTWxSo8ogos1Zyul56+HrG4.ZeCoWayFtrfZLeVDfm4sKaM.69ZbWxtXoXyYak6508ngLd6PbHQXk6Zay7F1tG63.s7OmJnG5SjuTwpMXHcyOh46IQr7YqZ8n9dsRF2BKvnsRmElWOK7Y1ModzQsmNabSUGnTMLmOxM2zfWk2Q3ky.dWSCuaY21kSGDl1iDa+Z6FAfipCFbAlvRKq0b+qO0d0kVB8j8ZVuYiuswtOF0X21Gr+yZVe2CZiVZoEcj+CgPaEfHmf6OvmfFvYeGwMDE1CGhDvPQ.ORPQBvsfXcPOoQ65nNLNBGfZDHB4Q8IAgkzlZoUWzYQmZL.UPa8wul7HN7xHTVnRk6UdYz8te4haHkb0UQO7C1uUW8hMHpEZeTcTa3+N.966uAmU.dYfHmHHgns4vbOrJ7hsIrFRDhNByQ8gn11J+HnGRsttTWRXbSExG+Pd4repV05entil3AfZItOrmWMV+CYayNoPdSYxuL59U9hkQOn3FHS6HTBzGOP.V4E4a90sWoZYT8Rsn3.FpE1CT7rs1l0ILtm3FB4zftnZ9PzL0cLZ7XlX.wGUU10W8bT8V2Q9zS2BUKRDx5ipcezi43.OjR7y029T2dHHuku9iloOXYbWhr086w7HBzJnQcO9VgTjLdjXBc9zHQuIz02f48MFaqLZzUId7M1NqdlNePYj11xF1IhAh9Dlu+viYLuy2yvC4TOzNztzPrepMy+RHXvz8VBh9JjmFR5K0N0oV56XzfB4+yA4Kpb7SKPFUGb.68nKcrrdowLu3n565pipSa4Q0or9n5kYAR0jUHUm7Rjpp0H6NZcw1PkOYfuN9W42pCId4Drxcq.ahrxnGXU7YcbUmjmq56uqqJ58Ls1G3T4n56tyLjL+GmT4WvDYMv4ERPMIAQnaiZGc3JpGmxfJa7ZKb.wuR1.NUaExq6Bbx28AqsLZsJ2eT8z5A3CkkwYChFffRyQhEczRqiNfLeriqA+8PHfSElor9IgJblejc1xm1MPU5WZDTHS87.okPGS8ffwBA.SOdwrlW8ckVRoOXdff.I1n.UjC5QEnNQAtgTV.hSBi3AZBFtLNWx6Pny+KYXn9fpwgLjFjVD4qXZ.LVz+8IDfSIW.ytBx.LGCTwDHOFJfEh5gOhfvwZAqFTC.NAA.Plmc8J5OoOVBEs4NjDdLgnG0XNGODQC7HmfjUSjsEifyLJDulBU75MFnnsZAo5Xe..bRe1QD83UDcnZhM.n5hncPPtZJm3UrzForx3cUjqDqqeGRhqP05H8uyL+3SEIyNfjGg8iHlRZNGh9JnLDRRXDFgpdUhi5vgZSJ2oLu3yksUnXpM03GBjk1chCF4vkE3OD4QEC7wCEoedsyUZPHPmF3SCHoyivWrkbzHsTCP5CffxBpA7xZ3AgZuYQGITncJnALrlobQcaHEljATn742P2l9u9LWnfGEVHUdiLsnbtOLdruBpRFsfHvBDH+I3.jSRJfD+odS5WDPRrPkTlauNExuzR4Kh98ODsRECnI+AKsCoAQjMx1b7uoazW8pWMaVMi4hGpODQMT9MYU.VzuuxmltpW5OyJDXqQQAnaeaz4v45qOAXZ3eRTBBOngZUdQ0WdF7S7EjKxBFp71zGMF424Nwh7VSWqYXxakolhyf4gCwkTkOkEmWzIuJeck0Weokp+z50NX+F0.e6xiltdlPmcWtc00WuYbbKR.0pwmnRgEuvPXXqwQKdxcOhergHimnrg.md5NDLrn5Hn7i2omZf3SOUh0SOE4ppMIfDjdohpVjlXmpxg8V016YsOvXXC1Xokj1.RlmZiCgMzhJ.Kj8ov92g5OEgrf5U057hFFUFHu74i9ACC8DGQOxvPtThJWJRlqvvJSlu+jDJCw+IITxN.jQJ4eB0yCpFH8o4QiEwGvFf7IGAkD0QMGS88gpHndZMgz5CYQvdmUYHSpF+xjRrMg8GqFjwk7jIeGU5wjHfz3wt6GhNWrpA4tMLBlyVNtQLovTScVgaAriC2mEA4RHERRJWnaZR2tk5.Cus78KnOwFAfA9q6xgJlE2HQDvP5dGIzw8fuoTfEzx.C7Z3f+DTfl3CLTFJH9cJUpjgAdDjPCHTy5ScQsw.+flsyK4RWpbx2QNon3r7vwW0HDJPaLCArPjMjVRKEudb7wJpJDOslveVF8hxKiJmp02H46TnXZCOgP61KrPwWBzmbg7PPga0j+aO6jZSF37SXakNqBgLAgoyrJyJRPmpyR5J0I.UIAGHV.9nBFeoKjH+6FGzQ0jYA6xBI6ETnnyabVv4smqmNcFWWRJkbXmnvlpFSuxCAjOE0JDD0+PBOoperbV4tV1Ca65WtCayUSd1PPVPi.Z3dCHwumdbbUFywwYEy91xJ2bw.DDMTcrb2L9X4R1FnE0Sd9olaJyRMHLOzTqKkU9jLVo5XLyyZrCDgKOuvXDBnFxVFRkSN41gbDPOWe5gKXuCQ75P1.3SBejAr.43I20u7ChSrxYm6eOmk0P4C2..PerpsaAOpViYM2vb1mu1ly3qm4LtZXNS3jdbzGyiyjx46Lo77NmO2ty4OLFmIdtNNS3PcblvI53LwiywYhmkiSlCxwY7mhiyzOBGYL5kxqd1fprt0eapa0djaMWUa8gT3blSnvI43IbFc1DN5ClHCbVPCmESN.aYpQEVtgsNMoFD+0bwf3uAOjcOppfQi8nZkcOlRk.crxVpyZtOABGGC8MmIyCyY5bvblF+KmIv8xYbbobL3B4bQLZbtH1LNSlIiiAEFK0t1kyV+cX5pmpBl7s0T2Py4twgaZ2j4E4K4dYdYHxa.JtCHmclacPdJ+ABZ3PyrTyvMjTdr2PxXSIeIg6sraQCc6Md7N2XvqLG+Ox3M99lVztdmN.E4TvdM6G8suqWtz6FT9cZn7o1PnLA2GhliO.TEdVvN4sO.2.3fK8M.1hS7YXu1z+hgX+yM2NBlt3Ya8ero5SsUeVTPluULv2G17.Fnf4kAd6u+i4rnAmUqu+KUwJGv0Y4L6Xu.BLsGZZjZblPzAFNJaIL6pUDuqbtx3KBL53hrssaTev0G.I.EIIvfcSJc0T2lXH0xIlRq9JkO.qb2+Q6pqUJ6ui1C9Sm6He7KpodWqRkYWkpytJ2c1UYsYWkOe1U4dytJ2elTIkfj5xpsytf8Wc4HnBpqpDZH41ztFlV1R17tFhNJRTAbiqF+mI268G9r5u+Egl+xA2K3p4WHAisoRWU8fifLWPK5JO6P5fgMvMpUSP1jEvFziEPcyll.V12sKgaB8wNd1JLDxRk1xms49DeBVXjm6Or4Sg8wi4Yy9MSSEUt7SESyc8ar0vEIy7i9kA2g4++dtCSap6iiYNH4fxC+Yte9irU48QRtI+TAU8ot0MotuMPNnMPHxkXRQXNIsC86kkuKATaRfm5ke.9E2YkD9DxNqjzokahofwV7ypiOH27D0MFpnDqNKSyPZAP6RBIn5l0n6SFF1xYNns13iH5LLZ7LQtUMotsXvjIrNRlzwdiYfHpSBQzp+BhI5l+v+YyqXhdESzqXhdESzqXhdESzqXhdESzqXh9SCSz+WLn6ic4rW4pu4O4P+FpV.DDn9+0gEraJeGUI4h9jNq9PcuW45JWUsREKqwqQ0YVi6NyZr1LqwmOyZbuYVi6OyZ7fongjjwVQgr95brPCspqiKyUeTb47V+W.zw7zDB

                        Joansi Villalona

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

                          This post is deleted!
                          1 Reply Last reply Reply Quote 0
                          • d.healeyD
                            d.healey
                            last edited by

                            It seems like you can get the menu text so you just need to use that text to load a sample map with the Sampler.loadSampleMap() function.

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

                              @d-healey in this particular scenario how so I do it?

                              Joansi Villalona

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

                                @jay I don't have time at the moment to study your code. Can you get the text from the menu?

                                1 Reply Last reply Reply Quote 1
                                • JayJ
                                  Jay
                                  last edited by

                                  @Christoph-Hart Is there any way that I can use this menu&submenu script to load instruments(selection) out of a sampler?

                                  Joansi Villalona

                                  1 Reply Last reply Reply Quote 0
                                  • ?
                                    A Former User @Christoph Hart
                                    last edited by

                                    @Christoph-Hart This is so cool!

                                    1 Reply Last reply Reply Quote 0
                                    • ?
                                      A Former User
                                      last edited by

                                      Hmm... Mysteriously this has stopped working somehow... The panel is there, the script goes through and I've set the 3rd parameter of the inline function getPopupmenuItemText (removeSub) to true but when I click on the panel it doesn't show or react anyhow... Funny thing since it's been working just now... ๐Ÿ˜ค๐Ÿคจ๐Ÿง

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

                                        @UrsBollhalder Right click ;)

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

                                        27

                                        Online

                                        1.7k

                                        Users

                                        11.8k

                                        Topics

                                        102.8k

                                        Posts