Within my window manager is a list of available controls that can be placed on a window. As of right now all I have
Radio Button (Option list)
Controls that are 'on the list to create'
- Drop down menus
- List boxes (with single and multi select)
- Slider bars
- Scrolling Text Boxes
Features on the list
- Modal Windows
- Predefined Window list (things like Message boxes / Yes - No Boxes / Input Boxes
- Window Stacking - When you place a window ontop of another they 'combine' and could be easily switched.
This will expand to more but for a demo I wanted at least these controls. Obviously I still need text boxes and such, but I wanted text handling to be its own monster thats inherited by a control.
This handler is contained is static library developed in C++. The only limitation in terms of rendering is the user may not change the faces (ie the shape) of the window. They can change the texture coords and define how they want to render the window. The library has predefined render functions but those do not have to be used. Windows can be 'skinned' and that image and the coords where to find each skin area can be defined by the user.
The hardest thing about developing this UI has been simply adding too much. I came up with this grand scheme on how I wanted everything to work. But I soon realized that those features simply are not needed. One being handling windows that were of various shapes. I had come up with something, but I really didn't like the uncertainty of this customization. At that point I said 'well if I want windows that are weird shapes I'll just write a library that handles only that. Personally I don't even like windows that are weird shapes.