HISE Logo Forum
    • Categories
    • Register
    • Login

    User Preference System

    Scheduled Pinned Locked Moved Snippet Waiting Room
    added
    5 Posts 3 Posters 221 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.
    • clevername27C
      clevername27
      last edited by clevername27

      2834c6d8-d923-4bef-b62b-05811f027e7a-demo.gif

      What It Is

      This is a user data file snippet that is separate from HISE's preset system, with an emphasis on reliability. A common use would be user preferences.

      EDIT: Amended with bug fix.

      EDIT: HISE experts, please improve my code, so it can become a HISE snippet, and help newer HISE developers learn and implement a preferences and automatic update system for their plugins.

      How It Works

      A global JSON record is created to hold to the user data. In this example, the data is the plugin version, the date of the last update check, and the values of several components (including one for automatic update checks). At startup, the code checks for the user file. If it doesn't exist, it's created, with default values written to it.

      The user has four buttons, which write the user's preferences, restore the user's preferences, reset everything to system defaults, and to accept (but not write) the preferences on the screen.

      For update-checking: If the option is active, then whenever the code runs, it checks a server to see if a newer version is available. It also writes the date and time this occurred, so update checks are only done automatically (if selected) once per day. The user can also check manually, also by selecting the automatic update option.

      If the server cannot be reached, and the user file cannot be written, the code continues operating. In that event, hard-coded values are used for the user data.

      There is a section for callbacks when the user selects on-screen user-data parameters (e.g. buttons), and a second set of callbacks for when the user data is read in. Likewise, the on-screen component values are restored.

      Extricating the snippet from my plugin required removal of most of the error-checking functionality, though the skeletons remain to plugin them in.

      The Snippet Version

      I've extracted a version of the User Data File code from my plugin, and tried to preserve as much functionality as possible. I have not fully-tested this snippet—if something doesn't work, the code and comments should be clear enough to provide solutions. (Or just ask.)

      User Data File

      1b4f9a44-515e-4e09-ac7d-167113fc537f-image.png

      Online JSON Update Record

      ea0b37d6-cd17-4ece-b767-dd87d27bc34b-image.png

      Snippet UI

      d659560b-a348-4f1e-a053-419d35927aca-image.png

      Snippet Code

      HiseSnippet 5226.3oc68rsbaijcTyXN6PlcSsas4g7XGVoFSkQl51bUZ8LlhWr3XIRsjT1qKWtX0jnoHVCBvfFPxrlUU4uk7v9creD4CH07Ej2yCaNmta.zfDjhTWroSDevV.n6y4zceNm9bCMNw0oGiycbSsV11iGwRs1uNcqw1dCJMfZZmpV4Tq8YoaOvjm5fwinbNyH0Zq8oOEe1ZYdPJwu+6e7.pE0tGK5VoR8bGydriLGZ5Ec2SdxyLsrpRMXsMGp05u5I054XWxwxwGniOM8VoFQ68F5Yr5TrYeR5TGR4CRs1+VZ5t6Zz+a9lu66M58Ue81eee52Zzq6te+WyL14q1k88LCiucWit86CTcECSOG2VdTOFO0ZO3.GiwsF3bgsDAO2ja10hgWrcpV.lk2tpikANDw6lpz.SKiSBlf3o.nbRzz0mJmt9mRerogY38il19shGPh5g9D3ZeRbx6SiQdaqSdaoQdIPRqoQROPRR+tzs54ZNxK5IH87OjtlsGysOEVmzIEYaS8I+m8Su4ljRtLfhHdCXjdT6yo7BYK4.8y1qvP5aXUcgKBgS9c+1s1fr6Vas99Yyt468e.JIuW+sxhxxUJcTwlEaWqQ8VjGQJA+W6h0a2h7EjmdTiCJdTKxqNsFo8gMqTr7q+XcTd6ix26brYiDwFPcMdTOGPcC4bpkOiSLsAYNtT3quoEivGy8XCQAQaGORWFg1CEnYFExdlkSWpE4jlUpVoYk5kpzh7XxOmMalRMN9jF0qTucms2ijIimqOaC86tSh2c2DuaLHbXkROqS0FM6b5IkK1tRq8DOI6kBQeRYVOKpKPgDEk4Mf5Qt.T2SF.5TITKKw3xf5QI8cbEWLxk0m4xfcN3hAb3v5rN9blawQiJiMGFXJrzh4EM6XCaNTHKrwA2ibZqJM6T7DjxJBD4QkgKqW73JPeyMx0jO7T.dHvJ7m44hCK+QF3xwoMORPbAP7bpKoKrZbp3w3SAPMvyaDeuM2bLrQ0ErtbSOVgdNCAHF0IDHUA5C26B5CImDAcLjX2wNdqAU9VNTixltrdvFBiQzHfemfG0wH3Yal6d8renQ4TpZUBKKiF160y99POaS1Ylf9SWvDr.0LDzVFWGKRWeOOPFLPXWdYG4dkcJMvwgyZLxyDdXmVfrG7GkMoVNm04EtfLuPYBqO02xi24ovx9iIAFIcFyqjyvQN1vE4ycCgat02eoIvlLNnp3tfDmAjulDIyqsSKw9a29jYxv95PnMd1sDUIATNogxQrl3FPZrmWXZ.HHjsrW.l1dlTPTShFdg2amqta6jP218p61tSMY1a.q2ap53J2ujeUSYSz7b26AwpAJa0tYs5Oc42L69c1desyllsil875Tw00w8Xvq.5YBoNzG.pumiTvptivYcal2djbsG.pYHWP4DpMgg8ibw.zRZgvno8YBCygmIsXE7Kg4xAUX6QJZCNmHgCnlv1VpZC9Sevz9I8MI2F5TPKlK.l5NdUc7sMtQTAzShKanCXsNW.UhIm3zuukoMaBr9bYePK9uUPcSIZUWK8hYFi9rWdulrU.T1pR61BMYOhbXkiNoRSR0SqWRZ198wBYkIVHnfGwrOY3XxHK+yLsIC.wSzNCKFJA10wwCEL8GA2zE8C1Zbgrl1nLOouusTQTKOpqm+nRptkecgZPLrDNDtyPl2.DFCAqWI9bVeeKBpInPlLYy.3NOFHi0ylIiKyy20lfWte1LLKNK5l8ovk6euv8plvsdDvdDoZsiprvh22KbeGJbOoH5gTaCKVPX3v.jQhDSOxgZrYunTOfQ+SEpPQXAyX4ziZQB5MdyJuE8fx.r3A67DvEjdEvUZLvOJkxSn2nPeEL5qPqp0ujxmjhiFI6nDRJ8.xaUqec1ELWk8EEOmZZQ6pvo.kJujkYPIvsGvitLpGD4sWnSQ7ptNgAnrQ2+LnjSaLnxhyDyKf8FNtFnVMOGhoGWECY.Op1CjYDpDgQEA4k.P+fn+ZQ9QZWoUaRsphn4RvP4RZbvOUoDbuVjmW7nZkC2CmbKgx6TV91vJds95rlOmZYZPxqEbaoH.xdZxKy5C82P+wEzBQ95q3aQM+01lvZailUhBXJthdJnztZyFGO8J9BrPuRnVaYkpCz383q7mVbg3YQKUhB0SANy64n7NISlL4ikrDcFlBQ8.0lDEymkt+6Dq+6tz8eWr+IG4mHXMG.kbWWeEkWOFW+yq0phF6sv.kEVK1pFu94l7I1BG2LBq5.IiM+BSudCheWfyMiHsl4rnbuNprgIVJysGQvYmQtwItiVPRBYX1Pw+9mZAySNBwmBXKiyjHgVADxRlBoCEOlTFu8YLOYXfwxMoVqFe22r014EZIWu.2uK2yE1.M+Va7cH6YHgHBEuVpAMTnG2oMH4iBRIJl8wr7PBntf0LuI3J43WiiN2dpA9hH7hRYYdLZMQWmji0Lppf2l1sSUvDJeWFO5OpYy83EsMZbH+Dv0JVQKyyrwXQiyNBAOfnWTRYmqCofkAyHK53tzduoHvIc9jXeAQ9tWGj2jQs7fU+FmybsniZxrMXtIQ.ymHRVADPLyPoVB.Ofg.MAaFrNq3ZyPEZunYs1J8YEO4jqoNsUBsYIsDHUWE2ZrXLEBavj2InaEt.AjbC9IZ7GCqnaRDU1QRKo2Yn7NZEMAGAkKnKj8VQVcMh5xvtIc57bzlccvF44osuk09Asa5JVA.QIPqjCviLB1owKete9HGmv3LKblC2L4Wd2e8xbg968TlGgRhxInZWG.zjxxhmwBTgE5SLUhRQgK5BHFoP4ldnRH4syqcyHdy4hNwlbjZ8AeKIFNLt8C8HLbfuAQ4mtoWA8gd3j9iiSRhz+gUsH9v7ypNcBImEXEJLlgHcJPoXEgGH5FS3zjKv65.mPFgoH.Ndj9O4jZDXXFxclEQk3Lbe9IWCEsELzYPPDIEUhDwouH9DpEIrM8wzNTPtzp.oHCDOjSTA1fz1cLNiik4Sj0NxxPJSl3bTwFVXGJxUJczfer4lv.nf4IQvFiPEmhlgmowbLUH6DZTzrlypwIhtp0T0z1TyaSL6DRSpInftWTdaYiXxkDA7lifnxcXDDWRPmhWTZuti2Mf9wb+Hnp8CDJnDa1EDvbk4NpLLMBkmtpglxodbfIFfZiuj3liHRwPrLH5JFjB.t3b1wGqB9abvJ3nCGr3PUvFGiEetizEXfd4RnIHJhgHr9w.M.+KyBMA9iDuPmExIQtXLYwGJaY.z9Itic7XzMK+.zWqTSMbNX7s.mxBcLIzocENajYwmNjfWDSvPLD3sR1IrZYBEJKg52lhfMgXAlp00aJvhJTTyZAXeU8hdeFT9.gxYj4jFmTInlFWlJ+39LnbmldzUUGG.VmF.WSKR8JuHFazGGA1RxBguTSDtpRVLix4r0XQo4KpL+MHTaCBePXkdzCqi8.GN3xhbGK6c7Yh.VYppjcxKfcRcv89nbt+PFhwKvVGKuPDPVSU7+.TJLsKMyIYNKdjjCUcKBIAWopOn92ARHJOUAl+GlMInUZwgtsSKZelDL4WBa1U3uZvDmvXgorcILz4jsUPtrCghwqZHdSv.aCW+gj2H77.2mWKh3QAbQaOd8r+WXBqmltEhGUHSjEHyh51YIotcduRc6tJRcB2RPmdkAHCahnY07.oDT3pKVZWFf0kTaQfVM.p2drD1hZ0X0MTJ3dpwzB1tA4vhMKWpQ4JkI0pWKJUWKh5wUhPoLaw9vfpjP5nv3ylWalnf1qRzLx.0b5xNh3RmPVmlSeVjDMMQem78ZZEOpcjRfoYSEBVQbCToN8irn1MG2qB1hKAG3aY4Hi3iLBTfqnmFO9aBsTmwrYtTKQZlPOlEuJXOOnnNyWw9LrzQQ8ex6kWDe2K2P5LqL8O6o56D4XZOQz+zZsV5BB5RjHxdHO6LjL1HdKIyrk6rvsbWrkIKFrGYtb+3.Bzhuehpwkt9o4lW7o86qNtO7nbF92AF4c+qm1891sj+HUgsZNEKZmhGczAEK8rVj6ZTdK75QnaVh588qD31Fl947n9vvFzQ8TXG+I2TJw1EYy7FRGjRrLiEVpF2RmO3TwteHoB48xMoO.7bExNaK0RfXStwymvmeeHydTzv1ZLg8VVOeLp98CdW8LjuOg3atNPjhZUGSECFo.ti5TyPRwZYMSADeOmgTOSrAiUNgMUcqutvrE7QgjiLEBys5SkY.5Rro2Gd0U.TdZ6ZGUq8Kg8fkVUQZc5Amh9Atj6Ae+Vv++7sfC3eV93ptJ4g27qv9knDMlL6lBWGE9PhvMHnh05OwgKhXSmXuhe9pWRYStH0wafcvV1Dkl4qrttd7iA2sNnQmF0WWKYrAEwniAc7C4hBYDCdlzIU7p13StV0mXTlayjPpaKEL7t.GInupAGrI3VbTvuWXZBeyGGB6VQdUNxWRVnJo7KI4dMQRzhNEMFvmfI9Ur8j5mJ0pBLxhJky7P6WGiAIdmXzl.GhLNqOkI6vFDXkRVJCgu0liwk0yMc74gqVhkqIKd3YLZ9CQz+5j+xeYA60ikU5y5j0EUUPlDJNfef.aLG95ghzpf7XFxy5F47WUbk80wqKfZdbRWFrjQ8HVLbpALGAnxw6qlbh8FoVXAMEPqNHHZkX6LprgoIdpEHYYLNoAQaPdQMFv.EjcwSa74l7fbSGWNF4smt1hymP8B+wQE08wqlaftOfxYO5H14Lqvz0L86a4U8tPIOIphykEpgxQBLPr0VisCTESCfvu7t+Ztf2mpiXdODyolKdBUDTcSWHNc5f6ZafBGI7toWfb.qGEDtiZ9C8JTHvtawqOdASdCAsnR7Qf5KPNTZsurYAGZLVnO.pZ+VAfdPSsqZZaxGvLJqNulBxLlHIaiX8L6OV.M7zjRbLScgTgF6gv+Z3fSIc8AQCFmqAZv8Bbo.Ze9XGCU5E6UHgdX61mPF.hrL2MBOFwn1m4Nl.6A5x.kLVr9dxJcwSlOEcLcnm2nCEcOeN8Z4QqHY5CZ.ETuyDEWVz9aRQUsJLY5C2puL1wiUDhdpJYjugMdSgmOjQTXImz20Yn3AJllnRZCSL6HY1Q0WP.mqdArcxSqzNebxYCxOe4Fgbv44dTOe9FDvONvAPtlmVh5z4MBjFbJCfUAIvDJ0I54PFBqYp2A.jaRBKbaBEUzRbiFOSqD5hUbdccfM7b7cwgKWvI2UUsfAu0CSMb6x5iuUghQLyPkStLSTpxAClWs0qKnjqVm7EeAI4VDTYWHyOIav92YhsdzyG3dr8BkRkljHwcF7LnP8fVh6CK4IPB6qC6ITJ7Ku6+f778HnkEIDLdzFC0QufrMwv156OAQqa2ghvAm3c8sEUqDcznMUuh4ga0IL7PLcylMqlZzhS0IQi+gInJ4Zd.YoOYFdp0ISvoT1HBuQHTsZjwkcl3FpiRtjV7TyAZXKf4UTdwztN9dg3JX62IWUEyCTrNGt3kLdcmW.5UctPMtynFzS7TR9L4T1vGp4O2FDMiAgehSnDQm9i9LWSv.ZoPYXOlrCg6v7pfw8qI4Gy3MiIllIlEm5+vEo407o5.NicHnObCTeLngq2DZ7BWlPUenYPnX6H5X4RWD2QzO8S0O4wFX7iQvuLQ0h80TIdUzavFMxRvN9O0hkyHl8KjGPg40Hl0mD7WlcNWNQqkWDXW4kDY4LK4yfcuCjyRfAq.VBpCTurxFNExDZFsTr02RTknhsySZWfYnTrPDYonJMVU0QhyANuMeth9dNOR4xg37xAXTm9vyovbO9X1fTqTi5cZ+xSpzodi5U.Gej3VsmgxVAUAuJEUMjRV6r0VDrbhDKV2xTZ7iWmoIRzLc0F5n2FIbH9DVWuExNehijSzc7buTTRwBLdUzWzAPTBz1kj6CV4JCJCybnHHkCPicd8+2aTdevJus8+T+UB7ZWKnePlTugmNmImlJEPWNnMubXcS.Xh42JoW+Twae59q17YAmfD2LNsUelsYbNqdsY2lDd2b9sYCwYwvIBM9HKZuXdmocd1ndE6AK8FB96AlDGy2L7H2yj+lXuvgUWzCAnnCPGX.snU17pqv.JGLcAm15ksZW4XR4JUKd5QsasJeP4rrBCIeZ9NihD3ZCx4VFA2TnRlibQR0g+hvkNiiHpE8bfZki6NYNURimc8ig9JO2s7Tg95yJC8+lx2FAh4wjBJZ8l3vplCpnkgI5xrZ3D7Lj0vN+5YwtdYVxjOpe+DeVTL1S7wXBRcmWGya6OrKF8aIgGzvTq8f3encRO6OzN5eGf5IO6p0ZnicMaSuFiX1y5qCTJ0AdM7WmVCkzvuNOp6AsaDy0yDIg0JyN2rGS9s5IS5xL9a7bFAjV36vQp09LOwS+MAeIen1LqTlFoV6ySK96sS81nOeR+qOYbzEkexElFdCBuw+k+SFvLOaPzmgomvdRLbkINtNh1MDWh+NFtRkZrNhw3sZ6oArP5yi8VODnZLLo.iNGJ+JOsC.jOKUp+9+CBlqhfS8COI0zyM+iJ58.gzlff+0oiJTMch9GzmfpOGhlSOmUy9DQwcgeajVZztyrP66d0cIZ2UCs+sytMFs+pYh1+4zIWaDyhDVpQtjq42mdphELkNw84yj3pj9VvzhYMR9aVOQReYSGz7I3cS0NAd24MMO6QRoz2XOFz4EeYRiiLoU87taXrS5kc2PMp9c+6IQ0OHcimc2QvESeCCKvrzLCz+BPzxg3uJs.zSKgN8G6sea5icL7sndw+1ygeg9TO.n2Xev2v.xZyM8Fq+E76V6CR2hRh+tzmfmUbISieRBzHra5cAMp9L98aRWoeeXwMh.eP5p+o6luYeoZ53iGp0GS8bMAtkz08G1B1TrGCvtMnWDsSYsOAsnPd8V303LPKlsg3h+N7S8vswqWS8vsCdXpgzdtNc5IsNB+PA94h6.zjs3ipXlzGiWS1NkvhI844glFlc50KNnlpi6bc63tW2N9UW2N90W2N9MW2N9sW2N9cWcGwySuhphIGDaRk53SpHL2bs0pXiIUUvsl5+UFpof.

      orangeO 1 Reply Last reply Reply Quote 10
      • orangeO
        orange @clevername27
        last edited by

        @clevername27 Looks Epic! Thanks for sharing! 🎊

        develop Branch / XCode 13.1
        macOS Monterey / M1 Max

        U 2 Replies Last reply Reply Quote 1
        • U
          udalilprofile @orange
          last edited by

          This post is deleted!
          1 Reply Last reply Reply Quote 0
          • U
            udalilprofile @orange
            last edited by

            @orange IMG_2041.jpeg
            ;(

            clevername27C 1 Reply Last reply Reply Quote 1
            • clevername27C
              clevername27 @udalilprofile
              last edited by clevername27

              @udalilprofile I've fixed that, thanks for pointing it out. (The veritable makeFrontInterface() went missing.)

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

              46

              Online

              1.7k

              Users

              11.7k

              Topics

              101.8k

              Posts