HISE Logo Forum
    • Categories
    • Register
    • Login

    Panel swaps with buttons

    Scheduled Pinned Locked Moved Unsolved General Questions
    4 Posts 3 Posters 445 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.
    • ?
      A Former User
      last edited by

      I am trying to make an fx chain replacement with Next & Previous buttons. The panel positions are saved in a Panel as an object. But array value changes are not working.

      Please help. My goal is to link them to the Effect Slots.

      ws.jpg

      HiseSnippet 1741.3oc2Y02SaaDF+Lf6pSoUsR6CfUz9ivfgrcLDdYrlxaqYq.YjN1jPrJi8Ex05XGYegRFCo9EXeW1mfo8Qp+49usmy9b74PRfZUTjHUEYeOu8644d9c2kb0C7swgg9AHIkW2qCFIMqbiddzVa0xh3gpsMR5gx0s7vtgnM60wJLD6fjjl96YRkTlAE84iOeSKWKOab5PHzQ9Da7qHsIzzQqW8GItt6Z4feMosf1lUqY66skuqeW.ISKqg5XY+Nqyv6awTaJYjzC1wgP8CZPsn3PjzLa56zqQK+26Eq+QjPxotX1K5nFfihGdWeWGFhYih1pEw0odRFGh.uTOM+mNN++R48HNj9imVGdZj.0TKDqGRSkEdSmAd5hvSS.dCARRBPZlXH8L4F1AjNzTIL77H4ZdTbPSKnrKBkXcQSMqh7V9fFdzEaa8N7tAvK8snjtll1BpFZZysdgBEfheHU0qa6Cgxdn5FpKsNerNr49eg3PaAipupVlweIlbVKJSfYeAVAA8dyNMahsoQ8MfziOIiv5A3y2j5ccA6iuflJfK4bq.0PVU8fSeKH4xnmW6X.75.9WPs7BplmbUF0YoMLqgC.8SJAmgoa42tiuG7Roh80nHj9DOW3Q0lc8roDeOUViHWL6g.e2R1Ilt.D.2t34JbYgBJJjlpknvTjeyTMXQ5HlNklaN0M1Psn+ouEpEEmCz+R3+JQUtCBbvAuzxywEGTBvfhxULGBzLbhdodLLwiI0gHCFoiTf+T.pH2XpybLOC2xx08TXtuz0S9nFD3SS+.0RDnjpstJQ8a62s.uM+7rBhJ7YvY+E6zMrUogiDA0JpNuJYNHRLej5Hdmx3bBWkLNPz1iImL7zTriKMSyFet3wEetJWO9bAeZwOJ7WEWuGrsbHS2PQGlrugIlntoAmW3vpTwKJtfHG+qSIOBMxKF03A1L25JQcWbGlsFWp34wqxAtjF.jj0GTuw3asStlOZZArgHmj3mr0zQGuD8FS7LGe7thUXG0LAeximUiaMBk9+a7tJaevvcEawF9aJWFUSb8ssbUINW.y8Y5WIdN3KNPXQonrJVc6jZBTO3qON7RTpIPTq48hfdf5hV2OL2PriWsJEvgu2pSGrSxtCht739gZdU8S5aWFUDM+DvdH+WePcRbCStn97lINNvzssnVIapzMbsLX4JtxoUnz0gisj2qTXTKEeUxrdxmzsnNDC9XjaOEIc3aMEIZr8ICCuB6ajJ1tkk2YXGFTG4tEbjL7kvDwR7tDB.ceeHjd70ntpf5fhZ1bnx3tKc4srhYGaLXbFVBV86TbPFNHnHbVprGPSdzGPS77i1wUEAE88p4QnGzA6MpSUh3kR1g43nBTkFcTtGmbTNVCCh3vNFW+YDTDlQRpx+PiC1+xhQSaEWScvC6fP+bMV+WR.fXAwuCNfRXolz13ygidGe1QE4swgui52ANEc+4UHp2F3bQ5Az+tp8De48rMK5Ove8mUaEcRv9i7Aqpm5ynCMH+dluTP7nGZ4P5FJNNghaKd7+z2MhGHz5bbMOXIWnkKtvKIeaxmmHKrqmVTJ8fjf1SDAcrB.OI5RgJQ178eNaX46YI3ufr9xUpTwPeIDEVTLY3Yk0WYYCiJZqVYoQVGFVU6iOWZZAbMa1T8UVmxS0GJG8rl37VMw4sZUuVRNP4Iad9giFLOQ6WECzHq9eUFVBF+TSnXkE2aTMa5aZTYUC8UWthNJsX8H4kVp7xlqnarBi3zGXEhyxmvyxM6Ro9dQoYAY9FuYRzLyle0mZh9SWKQMqRB2yuMXqUPu3FtAaA0PmmrngrTjQBwSYL3muUYF7+aUm.3G8IyfziYP+88ZFjdtYP54mAo+4lAobyLH8byfzuC5.uETF8bSYzmXTFiXJyeHcelxXjaJiQ9oLFS.JiQtoLFSFJiQtoLFSLJS4XJyZScelxTN2Tlx4mxTdBPYJmaJS4ICkobtoLkmXTFyXJy+dulxXlaJiY9oLlS.JiYtoLl2AcfEtYJiYtoLl28eWrGLR7+ExQ+FVhfeeAv+A7spTc8ar6ox646z00hl8BDY2ZJW.APf3s1wtYNuPBsWFxwmqaU71BwmIWmPsaMbLN0PvHBcmfQ9cw9XdiRJ.mQd2e8t4hWQG52kR7NaOKZ.A5Gj2ua6F.O1FCQ2K5BvgVK1xq720RZ0Zf8bhd4+fObgredJIItP8Dgn1V1A9uwN9GEjcauOLZD.SdQWzsh7dr2U0S9o.kk0VTC0l3PdisMK8+FcDZ31XjCaJmCaLygMKkCaVNG1TIG1rxXsgcm+unK0ucLc.Fn9NQ+1qRR63w1rHpKD8+.mE+1w.
      
      orangeO 1 Reply Last reply Reply Quote 0
      • orangeO
        orange @A Former User
        last edited by orange

        @Steve-Mohican

        Here you go :)

        Jan-04-2023 20-34-00.gif

        const numRacks = 5;
        const panelWidth = 190;
        const panelHeight = 140;
        const arry_EffectPanel = [];
        const arry_PrevBtn = [];
        const arry_NextBtn = [];
        
        const var stateObj = {state:[0, 1, 2, 3, 4]};
        
        const var Container = Content.getComponent("Container");
        inline function onContainerControl(component, value)
        {
        		if (typeof(component.getValue()) == "object")
        		{
        			panelOrderHandler();
        		}
        
        		else
        		{
        			component.setValue(stateObj);
        			panelOrderHandler();
        		}			
        };
        Content.getComponent("Container").setControlCallback(onContainerControl);
        
        
        
        for (i = 0; i < numRacks; i++)
        {
            arry_EffectPanel.push(Content.getComponent("EffectPanel" + i));
            
            arry_PrevBtn.push(Content.getComponent("PrevBtn" + i));
            arry_PrevBtn[i].setControlCallback(onarry_PrevBtnControl);
            
            arry_NextBtn.push(Content.getComponent("NextBtn" + i));
            arry_NextBtn[i].setControlCallback(onarry_NextBtnControl);    
        }
        
        
        
        inline function panelOrderHandler()
        {	
        	local panelVal = Container.getValue().state;
        	
        	for (i = 0; i < numRacks; i++)
        	{
        		arry_EffectPanel[panelVal[i]].set("x", panelWidth * i);				
        		arry_PrevBtn[i].set("visible", true);
        		arry_NextBtn[i].set("visible", true);	
        	}
        	
        	arry_PrevBtn[panelVal[0]].set("visible", false);
        	arry_NextBtn[panelVal[4]].set("visible", false);	
        }
        
        
        
        inline function onarry_PrevBtnControl(component, value)
        {
        	if (value)
        	{		
        		local idx = arry_PrevBtn.indexOf(component);		
        		local containerVal = Container.getValue().state;		
        		local getPos = arry_EffectPanel[idx].get("x") / panelWidth;			
        		local swappedPanel = containerVal[getPos - 1];		
        		
        		containerVal[getPos] = swappedPanel;
        		containerVal[getPos - 1] = idx;
        		
        		local Data = {state: containerVal};
        		
        		Container.setValue(Data);
        		Container.changed();
        	}
        }
        
        
        
        inline function onarry_NextBtnControl(component, value)
        {
        	if (value)
        	{		
        		local idx = arry_NextBtn.indexOf(component);		
        		local containerVal = Container.getValue().state;		
        		local getPos = arry_EffectPanel[idx].get("x") / panelWidth;			
        		local swappedPanel = containerVal[getPos + 1];		
        		
        		containerVal[getPos] = swappedPanel;
        		containerVal[getPos + 1] = idx;
        		
        		local Data = {state: containerVal};
        		
        		Container.setValue(Data);
        		Container.changed();
        	}
        }
        
        
        HiseSnippet 1717.3oc2ZssaaaCFlJIZnx8.ZA1CffwtvYIMSR1INodY0KmV8VShWcW1.BxJXjniYqrjgDcZ7xBPuZ2s2k8DLrGod4ta6mTRVTwNGpPyLVLPJD4+A98e3ih1rMC7sIgg9AHEsWNnGAobO0VC7XcVuCl5gZrAR4NpMwdD2PzZC5gCCINHEko+FtTEsYPhOu+oqgcwd1jzoPn87o1jmS6RYoy1r92Qcc2B6PdIsqj1Up2v12aceW+9.RlV0.0Ca+F7Qjcvb0lREo7Ia5PY9AsXXFIDoLyZ9NCZ0w+sdQ5uGMjdnKgOvD0BbTzza465vQLeVz5cntNMSh3PD3klow+zQw+mptM0gNb9z7vCEBzSsPNenLUV3McF3YJCOCI3MFHoHAoYhfziTaYGP6wRkvwycUa3wHAswPZWFJQ5hl52zTW2GzvisPW7aHaE.CFZQISCCi40sLLlsVgBPtOjo60u6Kfrdn9p5KVKdtd7R+ORcXcfYMWwHy7OiPOpCiKnxPA3ffAuZy1sI1LQaCHc+CxHrY.430XdiJXGxIrTAwRNFGnGxSp6d3qAImJd9I6CX2Df+75kmWuxAmkQcdTCEMR.neRF3HBac+t878fAkJNTihPzS8bgG0a22ylQ88z48gwh4OD36VxNwz4gEvsOY1BmVnflFssdIFTg7ampAek1iqSoYmUe0U0K5e3qgbQwYA8OE9SSj41MvgD7LrmiKInDfAMsy3NDXYjD8R8XXhGSxCBCtPGoA+SAHibkgN2wwQ35XW2CgZeoQCdd+A+Sa+.8RTHkZTSmp+kC6VfQyMGOgnCeNe0egd8C6TZ7HQRsh5yoSmEVItORcTbmxk4jXUx3.Ya2mdv3CSYkRizrqebC4ks9wpL55GK3xW+XkFt9hk+rn784aKGS4tvoPs102F6FIE5Rha4EEPoVwEDsNP6QAsqnNJZ9NeYb+D2CgiHdJU7jhyKu4vmCgeMnoTKw5r4+REONZCPvJV.PfpknW17zn5AN7LNry3zgvw3fQLqMFHQb+mw8CsnxEZg1Ek4GayxX2SPriP7HsSEIinxC04DHimool54PNYWocN34ugFXmTDuxZpjQfrl9gIKjb8CV+C3lxqayp+ERUtZZRNH7s3d8HNIabKCh8ic9i0MOHZMKv2iZDEN.rS1M0FuZB+.pB.qVAIDrAlgS2lOCBNKVwzbwvMF4VIZoRkY2A6cDwQrm3YQU1KntlkDl65ZxlE+OstN2Go55b+2WWid8TZUcGe3sjdkDENPC8yKpc6wJKtAHdm0QDyOvZvkYXIXmzCIAxsMbEgSwk8ngpW7QCkO4pcz6ajTz2qgGksaOh2EcdVT7Ko3GiLFUfpLwgHuexgH4UOD0ge.xgoUj.yHEc0us0t6bZQQYp3SzO+4rPnenAunjr.vZAqeOR.ixCMkMHGCG5O5TqZpaPBeCyumP2Xx.rpWG3bR5WM3qpOPdva4M2Cm3O985cDGBc3LuCW+Pe9aIaQ+kLecjnYeA1g1OTddJizU9KdjN1JZhP7wjFdv11PaYThWQ85DOOPUhoZHBoOIYQGHifd3.vSxtTJSjMd+qiFW7dTB9KnZtT0pUsLWDwfsiRl9dplKujkUUiUpt3ElGFWV68OUYZIbcurg5ywGFGp2QU7rgbcqgbcqQ8QBxykdxFmuauyGmncpS.ZDd3WhhGfQO0FRVYw8p0yF9Urpthk4JKU0Dklrtq5hKVdoJKaZsLm3LDXEhhxGDGkq0mw78DgYA03WdmIPyTM+rOz.86GIPqTmFtseWvVbvfnFty2BZfNNYSCUEgQRqm1kf+3WRkA++b8I.9QevLHyHFzedqlAYlaFjY9YPlerYPZWMCxL2LHyafNvqAkwL2TFyIFkwJhx7qJ2loLV4lxXkeJi0DfxXkaJi0jgxXkaJi0DixTNhx7jotMSYJmaJS47SYJOAnLkyMko7jgxTN2TlxSLJSkHJyeeqlxTI2TlJ4mxTYBPYpjaJSkafNvBWMkoRtoLUtg9tXidAdOTcaem9tXV16SjeIpwBnPXIeId7KpyKjxFjoi8i0kLdcg3iTaRY1cFOFmZLXDgtQvX7Uyd+3pWJ.mQcqe5l4dXQuvuOi5cz1XV.E5vT2oe2V.4xl.qtm39vg5MeOu3wFI0+VDOGwf+A9DKj+aFonDKzLQHpK1Nv+U1Q+Rc7K+8NhY.L4It2aM0s4i0MS984TUMVv.0k5PeksMO7erIBMdarxgMkygMUxgMKlCaVJG1TMG1r7kZC++B.ecele2H5.LQyME+fnJJa5w2AWzEh9W.2zy31B
        

        develop Branch / XCode 13.1
        macOS Monterey / M1 Max

        ? 1 Reply Last reply Reply Quote 6
        • ?
          A Former User @orange
          last edited by

          @orange Whoah! Thank you man, it's Awesome!!! 👏

          1 Reply Last reply Reply Quote 0
          • Adam_GA
            Adam_G
            last edited by

            @orange this code is impressive! youre a beast

            @Steve-Mohican did you ever find a way to link them to the Effect Slots?

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

            9

            Online

            1.7k

            Users

            11.8k

            Topics

            102.4k

            Posts