Paint Routine Graphics and Mouse Callback in a Function
-
I need a common function that controls a Panel's Paint Routine Graphics and Mouse Callback depending on different cases. I tried to check the values with switch-case but it doesn't work. What am I missing?
inline function organizer(painter) { switch (painter) { case BluePaint : PaniterPnl.setPaintRoutine(function(g, h) { g.setColour(this.data.hover ? Colours.steelblue : Colours.blue); g.fillRect([0, 0, this.getWidth(), this.getHeight()]); g.setColour(this.data.hover ? Colours.navy : Colours.black); g.setFont("Arial", 30); g.drawAlignedText("Blue Case Accepted", [0, 0, this.getWidth(), this.getHeight()], "centred"); }); PaniterPnl.setMouseCallback(function(event) { if (event.clicked) { Engine.openWebsite("https://www.blue.com"); } this.data.hover = event.hover; this.repaint(); }); break; case YellowPaint : PaniterPnl.setPaintRoutine(function(g, h) { g.setColour(this.data.hover ? Colours.lightyellow : Colours.yellow); g.fillRect([0, 0, this.getWidth(), this.getHeight()]); g.setColour(this.data.hover ? Colours.navy : Colours.black); g.setFont("Arial", 30); g.drawAlignedText("Yellow Case Accepted", [0, 0, this.getWidth(), this.getHeight()], "centred"); }); PaniterPnl.setMouseCallback(function(event) { if (event.clicked) { Engine.openWebsite("https://www.yellow.com"); } this.data.hover = event.hover; this.repaint(); }); break; } }
HiseSnippet 1453.3oc4X80aaaCDWJIpqRscXEnOLrGFHzCCJ.Yt1tccEtnnMwIYMaKoF08OaXXnfVh1lHRjFRzw0KHeW1mj8YZeC1tiTxRNwwyKnsOrY3XadGOd+t+QcW5jJCYYYxTKa2WNcDyx9lNcmJTCaOjxEVGrqk8cb1mGyxlloXID16nIihYV6LcDMKiEYYau92g6z1cCK8q+7I6PiohPVIIKqWK4grejmvUkT67zefGGuOMh8RdRkce+mdPnTzVFKGCnZcm5VingGSGvNhhaaMGK6qsWDWIS6pnJVlk8F6Hil1cnbhvr+Wyy38.PBKZX0ENHC48kwQHhQpVsGxii5TX8YVvozozWrtwWbGmC4Q7YzK8IellAoThp9C60lGdqOG7ZTEd0q.uE.I6JPZCCjtsS2vT9HUIGDO2v4.ghk1mFNenwrWq0tgmSaIrCgpVB8X19ovhYRDbu502h.er4i77.WelhbBMkriRIZPdLoPvALUaYxHo.VD3q45iRvEwbAizerHTwkBhTn4ghkJiCBKjYK3TiGy1z6TOWd+f7EtxzATA+2XoA6.D5.dXEbpmAG7RUbsLjpVEsoww8fTjf40LhMuyaPMWpA0bIFTy+8FzOyhikSVMSp4xLolWlI0AzDDE6HhqXWznHfNKNvujs+VjFPP9gXLtXef5frnQrTEmkAoDIee2mez4D5T+I7H0P+VMeHHt+PFevPkeqFO.W0SlFwR6B1peqx0ufFwGmYn.GThoR1uEYdBMyoPQeTg8BhQ7aGygesE4YxSXojuhraJcv.tXf+Yn8WBOsAfN2WHGqfHVPQDKXvVjgPXg3QbcI4u7VfzGJGmwl4qmIN6Dv8nCqPbkXVVKDQEKBBvtjSccguv+Hm4Ub93Gpg7rZQTEs1PM3eLwHrd0iJ2RJaDB7fMMzLXyaAodyxkz6mkBnBTa1DtJbHojnKh0PZFiLqHhzBgn6p6tvcCtL7KDSCLoiXnJ37l0SHFFY0fGJvh6A5jzZFMb4lOp5I0Gtn+ErPUvu.Qb3s97fZf2f4VAaVR3Y57qfM+Uvefh6Z9b0vhfdxz4fADTAbT8L1Wh0aamxoXx88fpADgEaHJkNY6X9.AK5kr2gElng0FcqaGFxFoXQfTqrM.I2gPvOEjBfAoZtHpuyxswEDlVddoNPYv7hyO0N9SKbdtt6IfxGVMnTW7FVuLPQA9CUpQYst6cmLYhNfUCtVyuvqio0EQuB3tBo2yssJo3EzKLaiQ2KkQOFYN6sNAtxklebRgiwv0TsVqj8XH7eizXiK8+AIxlf1GyT4Y4wHH8bOy06LOyqJsObjTwdtHP+DEfO47r52eg7xeneLb6+hXicMmtLACDiS5wRq1lBtQnUx46O04x6OsZ6ygl1FprQo3.HX+bHZbYMUak2qAzK6Z4nB1pR2I6ml2I6NiUJovhCMr9IN5F3rz.t57CVqrvMWfvu5fcg.M1OcNbJa6AnsK6DX3DS20tN6xxNVIGAJZVCZV1W+eDwuCbi1dftlV7CET5ASp3fOCwR2DEb7WKJGRlFoPJeYNEd1gxDPazT8QXar5UFBMMP3OtHDttio9+8.HtgAD2pXFDrKSMFtoSYc+47EcfeLSyet8407uWn4YMFhTst.0lUIW134EoZZ+rJ846vzx9KbtrNLggRuv.WvndxnwwT07y+gC8ly.J5lanKbvJAb4zzpCE+danvUEh21oC1j3hw3ZK.iXM5G.LlOJ8sb1qee3Ymk.bCm8+oOLyMaYZOXvgTUJGyFOZbRWHGJjAZW.4r3kd1qg41l00w0nGnKSDoW7WvqblMJpDPlMJXZkPCSkuMzbuDNr900T.LIz+eJbcNDWSlcaliS8Z0sR3Q72FFhl+WC2XtXYZdEj4dWAYt+UPlu4JHyCtBx7sWAYd3RkA+W1r8XkLwTN.D5rm9AC116InPlkNKz5uACnyOhB
-
You can't dynamically assign callback functions. You need to use a different approach.
You need to assign your callbacks in
on init
after you get a reference to the panel. Any if/switch statements need to be placed inside the callbacks.Since it looks like all your paint routines are the same, except you are changing the colour, you could instead change the panel's colours and trigger a repaint from your switch statement. That way you don't have to write the same thing multiple times.
-
@d-healey Ok I understand, Thank you.
Colors, text and also the button links are changing depending on the case.
I will try to do it with a trigger -
@Fortune I couldn't find a simple way to use the simple if else checks inside the paint routines for these multiple situations :(
-
You just need to assign some starting values to the paint routine and mouse callback (no matter what they are in this case, since the panel is hidden on init), then you can change them as you wish ;)
HiseSnippet 1506.3oc2X02aaSDF+ba8X1rgXR6OP7WmhPHWoRZR1XTkpwZaZKq.sKZYrwDBMcw9hyoZeWj8kjEl5m.9RvGE9Hw2.34tyN1tMsqD1PBrhZy87xc+dd0OW5lH7ooohDjkyylMhhrtkcuYb4vNCILN5n8QV209PVDMcVpjFioulDOJhh1a1HRZJM.YYs52njzxYMj94OdzdjHB2mVPBgdtf4S+dVLSVPs6NeGKJ5PR.8Yr3RRe+cNxWv6HhDiATspcCzHh+ojP5IDkXqXirtwAALoHomjHooHq01SDLq2PwTtQ9myRY8APBKZh5Aajg7ghn.EhUTQcFxhB5la8oHXW5V3KV03Ktq8wr.1b5E9jOVy.WnQY+g0JUg2pUfWyxvqQI3s.HYUBRqYfzcr64mvFIK3nvyGZeDWRSFP7qFZLxhV4Wcs6H.I3x5wjSoGl.Klqg28ZzXCL7m0210Eb8oR7DRBdOoj2D+PbthgTYGQ7HAGV3USysFnAiGw3T7fwbeISvwBtlkRqDQjmetJa.aZzX55tuw0gMvyr.KRBIb1uPS7fS2w8L.AW44UOUQUu0cHQQ8gLCupmnxHNmUz5JshVWtUz5usUz7saEstJqn0hshtv1CQqt7nRlBIH.nSi7pUvt1F3lPvbKUrLWN3vfrkQzDIilBg93us2SN4bJ8lZSYAxg0Z2ZKP8ZCorvgxZsa9.0p9hj.ZROv.q0tX8SIArwoFJvFEapXq0FWkPqLJfcJllasfZ3ZchXv21.+XwDZB9yw6mPBCY7P.N0lXpQ.wFPhRomo7GatI9khwXNkFfkBLXVXBNUR.6hGhAmET0AwN2BCSa5PMq7ohwfPTu73qW3F3gPPD65DZBFJn5IGxRqGPjj5C0X5QXCiz5PyOZTeHXiaOmlZ45aicwvSX8APyrmR8kd+DXsvG8dAQ+Wn7qdqWP3wZeq25+LnqiCN6wUahUg9whwoz4IHywNcBDUyx.wlU08U9RZv53C3fKjVGB27WP6mB6lWsgR4nz1at4zoSqOiphC0gDZHsGa.+4M6GhMapd01EhjPGobldJEy.7EKblWJnkkl..0w0orgAcByqqjIJWnKHP5TlzeHtPKGv9bfP9dJmdGRJEV5C+C2.2F9piy0OLqjVEpcLt6+4Q7hcZYh5Z0ul4cbxjYU..jInxaJsGGJTcV1MgQTEx2S0GUEdxDHHgLc2HVHmF7L5qUsfx8m3c88oijz.PqqM5gRSeH0HAzRmETJAVcdmkYcKH.c0Iy5PjAyKQRsJtjkROO17VRpqHVQh8b54liwX5mPImpXZ9n5DoqipjX17emDyHUnvTFWJyvP3+5Imk7p+OJ8rRO220InyyNUl0YvvGtlmRixbhPReB2S+JCfO97rFLXg7xZRGA8xWDa0T6IWkhd7ww8oIkGYRIHLJa04isu74iKO9tuYblRBJ3GAgvm.t8KandT1LPvrzqjgJPTodR5OJaR58FKkBNhACL+A15IIQZ.W99KnqsxsVfx+vQ6CgY077YvoXbLf19zIvkiLS26XuOM8ToXDbPyGaDYcy2JhecwA9Y6Lq7BITXA2XxV02GoGxqf6K2wLnWAkudGV5whX3TIIv1XaYYr9qMTZUBJ+d3hfxMsMU4uC.ysLf4142IRMMrFK2xtn5VAHaKWPS8dzE9R9IeiOwxbRyO4a7aYwrhAXUTQWfZqxjKFP9hTMiIWld0IgQVep8kMILZRdofsAnW79fvMQEAiiHxpWOUcm7LFPMYk6Dpt2GGZRMq7c1emcm0qKDuicW0.eKFiqr.LpJgeOfwra5ea6CFL.dUYA.Wy9ve78y05QloABOlHSXpjySFG2CRo7ovoygTXUOQqUTo5l0Mxi+8n7.8h+DdxX1LuvPwrYNSTLwOQ7JeSaK0ukvM0T.Lw0+LJN1GqVim2ry1tQ8FnXV.6U99Jy+KfFpKVmVKgN2aIz49KgNe4RnyCVBc9pkPmstRcT+hR6NVJhMkC.gtGneugk0AbBjYoyBQ+EPic633
-
@orange Whoohoo I didn't know if that is possible. Thank you so much, man!