QuickGUI 10.8

kungfoomasta

27-08-2010 06:45:18

QuickGUI 10.8 has been released!



Its been a while since the last QuickGUI update, and for good reason. The new QuickGUI 10.8 has been rewritten from scratch, and has several new features:
- Render System has been abstracted out of the library, removing Ogre dependency and allowing QuickGUI to work with any environment (embedded, console, wrappers, plugins, etc.)
- 3D GUI support
- Animation/Special Effects support
- Outlined and Shadowed fonts, such as fonts created by Font Studio.
- XML serialization (Thanks, Calder for leading this effort!)
- Custom Widget support
- Easy messaging system to subscribe and unsubscribe to notification of events
- CMake support for OSX and Linux platforms. (Many thanks to Calder for this!)

Download:

QuickGUI 10.8

Widget Set:

Button
Graphic
Label
Panel
ProgressBar
TextBox
Window (with or without TitleBar)

(I know the Widget set is smaller than before. I'm still continuing to work on QuickGUI to bring back the widget's that were previously supported.)

Integration Tutorial:

http://www.ogre3d.org/tikiwiki/tiki-index.php?page=QuickGUI%20Integration%20Tutorial

Learning the Basics:

http://www.ogre3d.org/tikiwiki/QuickGUI+Basics

Stardragon

27-08-2010 08:01:15

*shock and awe*

Kudos to you, KFM! This rocks!

I do detect MAJOR changes to my code, though, but... this rocks :-)

haltendehand

27-08-2010 15:52:36

Looks great, but looking at the tutorial I realized it's much more complicated than before and with fewer widgets. So, I'll wait until it supports more widgets, and will then adopt it

Calder

27-08-2010 17:12:15


For those who would like to see a full solution, a QuickGUIOgreDemo application is packaged with QuickGUI, which shows how Ogre and QuickGUI are used together.


The widgets will come. In the mean time, don't be scared off by complication. :D If you literally drop the appropriate files from QuickGUIOgreDemo into your own application, you should be ready to go (and skip the entire integration tutorial if you so choose, but it's good reading). The demo app compiles fine on Windows, Mac and Linux, so those classes should work just about anywhere you put them. As for everything else, the only setup you have to do now is this:

mGUIResourceManager = new GUIResourceManager();
mGUISkinEffectManager = new GUISkinEffectManager();
mGUICore = new QuickGUI::Core(mGUIResourceManager,mGUISkinEffectManager);

and then load whatever skins and fonts you want like this (taken directly from QuickGUIOgreDemo app):

// Register all Skins we plan on using
QuickGUI::SkinManager* skinMgr = QuickGUI::SkinManager::getSingletonPtr();
skinMgr->loadSkins("./resources/skins/Button.skin");
skinMgr->loadSkins("./resources/skins/Graphic.skin");
skinMgr->loadSkins("./resources/skins/Label.skin");
skinMgr->loadSkins("./resources/skins/MouseCursor.skin");
skinMgr->loadSkins("./resources/skins/Panel.skin");
skinMgr->loadSkins("./resources/skins/ProgressBar.skin");
skinMgr->loadSkins("./resources/skins/TextCursor.skin");
skinMgr->loadSkins("./resources/skins/TitleBar.skin");
skinMgr->loadSkins("./resources/skins/TextBox.skin");
skinMgr->loadSkins("./resources/skins/VScrollBar.skin");
skinMgr->loadSkins("./resources/skins/Window.skin");

// Register all fonts we plan on using
QuickGUI::FontManager* fontMgr = QuickGUI::FontManager::getSingletonPtr();
fontMgr->createFont("ControlFreak.14",mGUIResourceManager->getImage("ControlFreak.14.png"),10,"./resources/fonts/ControlFreak.14.xml");
fontMgr->createFont("Cuckoo.14",mGUIResourceManager->getImage("Cuckoo.14.png"),10,"./resources/fonts/Cuckoo.14.xml");

There's no script reader registration anymore either. Images and other resources behave just like any other Ogre assets. XML skin files and serialized interface elements are all loaded from files each time so there's no need to include them in resource groups.

On another note, I was thinking about creating a small static lib that just includes those classes so people can link against it without being scared off by the "10 files OMGWTFBBQ!?!?!". What are your feelings about that, KFM?

kungfoomasta

27-08-2010 21:39:10

@haltendehand:

I definately understand where you're coming from. I'm essentially giving more power and responsibility to the application to provide QuickGUI with means to do rendering, which is has a lot of benefits, but also requires more effort on the developers part. Fortunately I provide all of the implementations for use with Ogre, so providing the rendering solution for QuickGUI is as easy as Calder says, you just copy the files provided into your project and throw the classes at QuickGUI.

About the widgets, this is also understandable. There are a lot of Widgets that I will be bringing over in September. This release is mainly for early adopters, as code changes will be required. Its also opportunity for users to provide feedback and insight about the design, or functionality that they need that QuickGUI does not currently provide. I know that many people probably have UIs that require more advanced widgets than the ones I support, however it would help me know which ones are most needed. The next steps for me will be working on ScrollBars, getting scrolling working, and the TextArea/Console widgets. ComboBox, Checkboxes, and RadioButtons are also necessary, but I consider them priority 2.

@Calder:

That sounds like a great idea! I don't think it will be as educational as integrating things the hard way, but for users who want a more turn key solution, it will be ideal. There may be some maintenance costs involved, but overall its probably 10 files or so.

haltendehand

28-08-2010 22:03:12

Just a suggestion for you, KFM: what do you think about an option like "autoCreate" that can be passed to the core constructor, which, in the case it's true, will "auto-adopt" the standard Texture, RenderTexture and Image implementation?
That would really help beginners, because, at the moment, if I was a beginner and would see that I have to do that much stuff before doing anything useful with QuickGUI, I would just use MyGUI or ButtonGUI

Calder

29-08-2010 00:13:34

The problem with that is that QuickGUI would then depend on Ogre to compile. It's not quite the same, but I just finished putting together the little library of Ogre implementation files. The next release should package QuickGUI, QuickGUIOgreDemo, and QuickGUIOgrePlatform (the lib I was talking about) in one simple to install bundle. You'll have to link against both QuickGUI and QuickGUIPlatform libraries, but that's not a big deal. If you're on Mac or Linux, you could check out the trunk right now and give it a shot; both of those work right now. I think KFM said he was on a short vacation, but when he gets back then he'll have the VC project updated in short order.

kungfoomasta

29-08-2010 00:39:36

I'm spending time with family, but sometimes I can hop on to do a little work here and there. :D

Calder beat me to a response, but here is mine:

In the next release of QuickGUI there will be a provided QuickGUIOgrePlatform project, which contains all the files needed for QuickGUI to render using Ogre. This cannot be absorbed into the QuickGUI library, otherwise QuickGUI will then depend on Ogre, and possibly boost, if Ogre depends on that. Currently the new QuickGUI has no dependencies, and I plan to keep it this way.

QuickGUI may take more steps to integrate compared to before, and this might seem discouraging for beginners just learning the ropes of C++, but they can always post on the forum and get help. I'm willing to help people use QuickGUI, but I'm not interested in changing QuickGUI's design so that beginners have as few steps as possible. QuickGUI is still growing but I consider this new version a decently serious solution for GUI needs. That doesn't mean beginners cannot use this library, but it means they will have to invest some effort to get it working in their application. All this really comes down to is taking 30 minutes or less to read, digest, and follow my Integration tutorial, to gain understanding of how the library works, and know how to change the rendering code if you have specific needs. If that cost is too much, the gorilla library Betajaen just released is 1 header and 1 cpp file, and takes no real understanding of include/lib dependencies to integrate and use. Of course it has an entirely different feature set as well.. :P

(I'm not trying to be harsh or mean here, but I feel this is reasonable)

haltendehand

29-08-2010 17:09:52

The next release should package QuickGUI, QuickGUIOgreDemo, and QuickGUIOgrePlatform (the lib I was talking about) in one simple to install bundle.
I think that's the ideal solution

Calder

29-08-2010 23:07:19

Ok, just to make sure we're clear: there's still two libs, it's just really easy to build the whole bundle in one fell swoop (with CMake at least). Hopefully that is indeed what you thought was the ideal solution? :D

haltendehand

30-08-2010 00:00:39

Yes, it's like MyGUI does it :wink:

Calder

30-08-2010 00:04:29

Except that MyGUI's platform libs are stuck in this weird state of indecision as to whether to be part of MyGUI or not. Try writing a CMake script to find both and you'll see what I mean! :roll: That annoyed me so much that I've set things up so that QuickGUIOgrePlatform builds and installs in exactly the same way as QuickGUI itself, so that if you can find QuickGUI chances are QuickGUIOgrePlatform is sitting right along side it. :)

NickM

06-09-2010 07:07:00

Hi guys, is it only me that gets a few of the following type errors when I try to compile?


1> c:\dev\quickgui_10_8\quickgui\quickguisize.h(113) : see previous definition of 'public: static QuickGUI::Size const QuickGUI::Size::ZERO'
1>c:\dev\quickgui_10_8\quickgui\quickguisize.cpp(54) : error C2491: 'QuickGUI::Size::ZERO' : definition of dllimport static data member not allowed
1>QuickGUIRect.cpp


I also get lots of warnings such as...


1>c:\dev\quickgui_10_8\quickgui\quickguisize.cpp(36) : warning C4273: 'QuickGUI::Size::Size' : inconsistent dll linkage
1> c:\dev\quickgui_10_8\quickgui\quickguisize.h(40) : see previous definition of '{ctor}'
1>c:\dev\quickgui_10_8\quickgui\quickguisize.cpp(42) : warning C4273: 'QuickGUI::Size::Size' : inconsistent dll linkage
1> c:\dev\quickgui_10_8\quickgui\quickguisize.h(41) : see previous definition of '{ctor}'
1>c:\dev\quickgui_10_8\quickgui\quickguisize.cpp(48) : warning C4273: 'QuickGUI::Size::Size' : inconsistent dll linkage
1> c:\dev\quickgui_10_8\quickgui\quickguisize.h(42) : see previous definition of '{ctor}'


thanks
Nick

Whitebear

06-09-2010 08:02:51

I have these errors and warnings too. I'm using VS2010.

kungfoomasta

08-09-2010 17:54:32

Please set the build configuration to "RelWithDebInfo", as I haven't configured the "Release" and "Debug" configurations to work. Perhaps I should just delete these build configurations since nobody will need them..

Let me know if this solves the issue.

kungfoomasta

08-09-2010 19:27:00

I've just added another Tutorial to learn the basics of 10.8 and beyond. Let me know if there are any adjustments I can apply to make it better!

Calder

08-09-2010 20:05:43

I can't think of anything else right now, it looks good! Very brief introduction to a few important topics, but I still felt like they were all sufficiently explained. What are you thinking of doing for the next tutorial? I was thinking some sort of "Hello world" button thing might be good, just to walk people through the complete process for a very simple GUI. Or is there more foundation stuff you want to establish first?

kungfoomasta

08-09-2010 22:49:52

Hm, maybe next I should write a small tutorial about Text, how to create it and manipulate it.

I also want to write one on serialization sometime, and advanced skinning. (themes and skin effects)

NickM

17-09-2010 06:33:02

Please set the build configuration to "RelWithDebInfo", as I haven't configured the "Release" and "Debug" configurations to work. Perhaps I should just delete these build configurations since nobody will need them..

Let me know if this solves the issue.


Thanks, compiles perfectly now :-)

Xakiru

10-05-2012 12:59:52

Any mirror ? it's seems that the server is down ...
thanks by advence.

linxp

20-01-2015 08:12:47

The link is dead...

Root13

04-11-2016 09:20:36

Downloaded, wish me good luck)