TcMenu / tcMenu

Menu library for Arduino, mbed and ESP with designer UI and remote control capabilities.
https://www.thecoderscorner.com/products/arduino-libraries/tc-menu/
Apache License 2.0
292 stars 24 forks source link

Create new theme header files on top of ThemeBuilder and make old versions legacy. #453

Closed davetcc closed 2 months ago

davetcc commented 8 months ago

Is your feature request related to a problem? Please describe. Themes have been a thorn in the side of designer for a long time, they expose far too much of the graphics plugin's internal workings and are exceedingly difficult to understand unless you've read the source code. This is obviously far from ideal, and a better solution is needed.

Describe the solution you'd like Now that ThemeBuilder exists, it is possible to make the designer generate themes based on theme builder, which wraps all the complexity up and provides simple, easy to understand methods, which should be easier to deal with programmatically. The simplest solution is for the existing themes to be "re-worded" into themebuilder style, which is far easier to understand and extend.

THIS ISSUE MUST NOT BE CLOSED UNTIL THE THEME BUILDER IS FULLY DOCUMENTED

Additional context See the TcThemeBuilder class in the TcMenuLib library. See that some examples have already been upgraded, such as PicoSDK OLED Encoder.

We are open to as much feedback as possible on this.

davetcc commented 3 months ago

After thinking about this for a long time, IMHO there should be a couple of inbuilt "starter" themes that can be chosen in code generator, which get deployed into the theme header file (as now). Importantly, we should then document the theme builder support well enough that people can easily modify the provided template to meet their needs. @vzahradnik @Ales-Svoboda what do you think?

vzahradnik commented 3 months ago

I agree. Currently, the logic is so complex that even I am using just the default code generated by the TcMenu generator.

Ales-Svoboda commented 3 months ago

I also agree.