I love doing the pretty bits of guis, coming up with nice animation effects, etc.
The nuts and bolts of a gui are the boring bits I have done so many times before I can do it in my sleep. Literally.
For me it's getting the balance right between versatility, and coding speed.
Say you want to add a button, you create an instance of a button, maybe set the position, set the text, maybe set the sound effect, possibly set up different graphics for each button state, etc.etc. etc.
So adding a single button to a container could quite easily require 30-40 lines of code.
So you setup default values for everything, start coding the game and find that now you want ANOTHER optional variable on the button..... :blink:
Linking a widget into the game logic is one of those points that can easily lead to huge code bloat.
In my existing GUI, you can put widgets into a container which automatically figures out the best way to display them all in the available screen space. This is fine and not that complex code, but in some circumstances one of the widgets can trigger a re-arrangement of all the widgets. Doesn't sound complex, until you start thinking about which classes can see other classes etc.
I'm just trying to think of a new way of handling all this that can keep the code from inflating like a man stepping out of an airlock into the vacuum of space.