UIFlow Display Pages, Settings page, alternate layouts
-
The GUI display design shows all labels and shapes. They can be shown and hidden programmatically, but creating a "settings" page, or any project that has different screens, becomes very cluttered and problematic.
A "Page" block would be incredible, and would open up the ability to make much more complex projects in UIFlow! Or could be a block in "Screen" or "Label"... "Set page [page0]"
-
For what it's worth, I realize this would be a significant change to UIFlow. I wonder if it would more easily be implemented by adding a show/hide button in the GUI designer? In the UI Elements list, there is a copy and trash icon next to each element. A "Show/Hide" checkbox allows for the element to exist, be placed and edited, but can then be hidden so as to allow other elements to be added. Then, in the blockly, groups of elements can be shown or hidden... Does that make sense? As I'm thinking about it this way, just adding a "Show/Hide" checkbox makes multiple screens doable in UIFlow. A new block for Pages would be even better, but being able to hide elements in the designer would at least allow the functionality...
-
In one of my projects on M5Paper I simply create screens on the fly by a function that draws text, rects and images to the position I want after clearing the screen. There is no label or other UI element. The function is called with parameters from the main loop.
- clear screen
- draw a rect for title and insert title text
- move a image to position x,y and show it
- draw a table of content by looping thru a list and set x, y positions for text and lines
- show screen
-
Indeed, there are ways to skin this cat...
Could create a label or shape in the GUI, exactly the way that you'd like to see it, then set it's color to the background color. In blockly, create a Function with a name like "SettingsMenu" that changes the colors of the settings labels and values to the visible color, and the other labels and values to the background color. Yes, that could work, but UIFlow is supposed to make programming achievable. A "Pages" block would be a lot easier for my 10 year old to comprehend than having to come up with a paging system on her own. Programatically creating shapes and text would be even harder!
M5Paper and M5Core.Ink (which I have) add another layer of creating the visuals and then sending them to the screen, partial refresh, etc... Wish "Set screen partial show" was built into the UI element, as having to figure out those coordinates is a pain.