irrdev wrote:@betajaen
Ok, I know that you are supposed to be "finished" but I just can't resist making a wish list for a couple of extras!

Here they are:
1) Add a flag which points to another mouse pointer which is displayed when the user hovers over a button. If the mouse pointer is NULL(ie. not initialized) then the mouse pointer doesn't change.
Okay, here I go. The Mouse Pointer is optional, I added the option that way so you may have your own mouse pointer system. If you don't set a Mouse Pointer in BetaGUI it's never displayed.
But if your mouse pointer is an overlay for example then you can just set mMP in GUI to your mouse pointer overlay, for anything else just don't use GUI::createMousePointer() at your setup code.
irrdev wrote:
2)An option for setting the trasparency of the window.
That would be handled via the material perhaps via a shader or just a png image.
irrdev wrote:
3)A parent->child window configuration. The child windows would preferably have a smaller title bar, and can be effected by changes made in the main window. For example, if the parent moves, the child moves too.
If you mean something like MDI in Windows, then it would increase the code count and complexities of it all. I don't think many people would use it too.
irrdev wrote:
4)Have an "X" exit icon on the top-right of the title bar of all child windows. The parents windows would not have this so that they would always be visible unlessed distroyed by the app itself.
Thats just easily done by the user, simple button at 0,0 22,22 pixels in size with a callback to a close window function.
If I added it myself, again theres the extra code and an extra function in the callback function, also handling it. It's probably better to let the user handle such things.
irrdev wrote:
5)Have a special window dialog which can only have one instance in any app. There is no title bar, and it acts and looks to the user like a menu strip at the top of the screen. I think this would be really simple to add, especially if you just used window buttons for for the menu choices. Of course there wouldn't be any animation effects or the such.
That would be window at the top, that cannot move or resize. With buttons with custom materials too look like menus, click on a button you get another window, with a list of buttons. It would come off quite well.
irrdev wrote:
6)Draw 2d images inside a window. This would be really useful on startup for example; show a welcome screen and the app icon in the window with an OK button at the bottom.
I may add a custom material for the StaticText, or you could just add an overlay manually to mWindow->mOP for this.
irrdev wrote:
This may look like quite a long wish list. The only reason I haven't tried implimenting these features myself are because you spoke truthfully when you said that the code was un-readable! I don't think that they would be very hard to add, and they mostly deal with window management anyway. After all these additions, I think your gui calss could still be considered "small and sexy." Hey, the class used to be some 200++ lines of code; that means you can still add 101 lines and still fit into your description!

There are a good wish list, but if I added them it's then half implementing extended GUI features.Then others would want the other bits and more then it would be very hard to keep it less than the 200 line level. Most if not all of them above can be replicated by the 3 available GUI gadgets things; Buttons, TextInput or StaticText anyway.
Of course your welcome to "semi-wrap" these new features such as Menus or even MDI (just re-attach the windows->mO to another mWindows->mO) and post it on the add ons second in the wiki page.
Sorry to be so negative but like many times before I have my reasons and I'm sticking with them
@big_o
Ahh, like centre the buttons or make the window title centered. I had a quick go at it, but there is no real way (that I can think of) of actually getting how many pixels across a piece of text uses. From that I can centre the text horizontally, but now left aligned is the best I can do
