A few months ago, I decided that I would make a simple LED light fixture for my aquarium with some 3W star LEDs and a few heatsinks. Then I thought I might add an Arduino with an RTC to turn it on and off at certain times of day... fast forward a few months, and I'm designing a GUI controlled aquarium controller with automatic fert dosing, and temperature sensor + heater with an Arduino mega.
I have researched a bit, and found similar projects with GUI's, but they weren't super great, and seemed very time consuming, as you had to hard-code every button, guage, etc. After a little thinking, I came up with the idea of creating a GUI library for Arduino, to take control of button presses, menus, etc. Would it be reasonable to create a library which would take care of all the low-level stuff? I've seen a few GUI libraries for Arduino, but they weren't what I was looking for. I'm not a newbie to programming, but I also wouldn't call myself an expert either, so this is what I'm thinking of:
/*
char title[] = "Title";
char btn1_txt[] = "Button 1";
page1_btns[] = {btn1, btn2, .....
GUIbutton btn1(uint8_t color, uint8_t btn_index, char &text, &page);
-------------------------------------------------------------------------
uint8_t color:Â Color of button in 565 format
uint8_t index:Â Index number of button (button #1 in top-left corner)
char &text:Â Text to display on button
&page:Â Page object to display when button is pressed
-------------------------------------------------------------------------
       Â
GUIpage page1(uint8_t &page1_btns, uint8_t rotation, char &title);
-------------------------------------------------------------------------
uint8_t &page_btns:Â Buttons to show on screen
uint8_t rotation:Â Rotation of the screen
char *title:Â Title of the page displayed
-------------------------------------------------------------------------
  GUI page sketch
|------------------------------|
| HOME |  title       |
|------|Â Â -------------------|
|Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â |
|Â btn1Â Â btn2Â Â btn3Â Â Â |
|Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â |
|Â btn4Â Â btn5Â Â Â Â Â Â Â Â |
|Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â |
|------------------------------|
*/
I apologize if I'm not very clear, but my main idea is to try to make a library that makes designing a GUI easier without hard-coding every aspect of the GUI.