Most of the GUI solutions were too complex for what I needed... I just wanted buttons and text fields, the two I found closest to what I needed were Navi and BetaGUI. Here are some of the positives and negatives that led me to make buttonGUI:
*I in no way claim the following to be a comprehensive list of positives and negatives of navi or betaGUI... these are only the ones that relate to buttonGUI.
Navi positives:
- extremely easy and intuitive to use
- very well documented
- fading
Navi negatives:
- not readily multiplatform
- does not allow custom fonts
- requires > 10 MB of dependencies
betaGUI positives:
- extremely easy to setup/integrate
- readily multiplatform
- small yet feature rich
- only dependency is Ogre
- custom font supported
betaGUI negatives
- hit and miss documentation
- not all versions compile
- was hard for me to understand/modify the code (sorry Betajaen, I still think you are awesome though!!)... it could be because i am not a professional programmer.
So I decided to make buttonGUI in an attempt to join the positives of Navi and betaGUI into a single GUI.
...and also in a secret attempt to bump betaGUI from its slot of "GUI to use when you just need something in there to start." (sorry again Betajaen >_<)
betaGUI positives + Navi positives = buttonGUI!!!
- brain-dead easy to setup/integrate
- readily multiplatform
- allows for custom fonts and colors
- fading buttons
- small yet feature rich
- easy and intuitive to use (as much as i could, anyway )
- well documented
- only dependency is Ogre (and a little OIS)
- allows 3D meshes on your buttons (idea ripped from myGUI, except not with RTT, mesh is simply loaded into an Overlay)
A special thanks to ajs15822, a bunch of his code is inside buttonGUI, and a special thanks to betajaen ( I think there might be a sliver of betaGUI code left in there too ^_^ )
Here are some details (excerpt from readme):
So I hope I reached my goal... please keep in mind I am not a professional programmer, but I did my best to make something that anyone could use really quickly and easily.ButtonGUI is based on the idea that there are no widgets, everything is a button.
One of the goals of buttonGUI is to be able to simply drop in buttonGUI.h and buttonGUI.cpp into your project and get started with an a relatively robust GUI system in just a few minutes.
Every button can be configured to report any combination of 4 events (aka enum buttonAction):Every 'button' can have 4 types of children:
- - onClick
- onRelease
- mouseOver
- mouseOff* these do not send buttonEvents and are generally handled as attributes of buttons.
- - other buttons
- textAreas*
- buttonMeshes*
- textInputAreas (a special type of button that can send more than the basic 4 events)
If you find bugs, need support, or have a feature you would like to add please use the forum I set up HERE
DOWNLOAD HERE:
BUTTONGUI DEMO
buttonGUI.h
buttonGUI.cpp
buttonGUI.readme (with usage instructions)
buttonGUI might be right for you if:
- you just need an interface in and working quickly
you don't care for complex widgets, tabs, radio buttons etc.
you are a beginner or not a professional programmer
you require a multiplatform solution
you feel a GUI should be as simple as "user click = GUI DO!"
- you will need to have more than 20 separate 2D elements on screen at a time during a game
your application requires tabs, submenus, sliders or other intricate widgets
your application requires users to be able to dynamically size GUI windows
I realize the cpp and h are a little bit cumbersome to have several classes in a single file. This is simply for ease of integration.