Discussion regarding the development of CEGUI itself - as opposed to questions about CEGUI usage that should be in the help forums.

Moderators: CEGUI MVP, CEGUI Team

User avatar
CEGUI Team (Retired)
Posts: 770
Joined: Mon Jan 24, 2005 21:20
Location: Copenhagen, Denmark


Postby lindquist » Mon Mar 27, 2006 21:03

Hi all.

There's alot of uncertainty sorrounding the 0.5.0 release for alot of you I think. Including myself to some extent.
So to get some things straight and to try to take the library development more public, I'm starting this thread.

The original release date we "decided" on IRC was April 1st or 2nd. Whether we will make it or not I am not completely sure of and in a way the release still feels a little premature too..

I've been fairly busy lately and have'nt had as much time as I had hoped I would have for CEGUI, so I pretty much have'nt finished any of the things I said I would. Shame on me :?

Anyway to let you guys know a little more about whats happening I'm posting the preliminary changelog so you can all see what has been going on:

Code: Select all

Various internal code cleanups:
Removal of unrequired utf8* casts on string literals.
Removed use of NULL macro from the library code.
Code refactorings to Font class. Removes some instances of repeated code, and makes some methods shorter / cleaner.
Split large methods in Scheme into smaller, more managable, chunks.
Removed all the System constructor overloads and replaced with a single method.
Removed string literals for component widget names which were scattered throughout the widget code.
Replaced virtually all member fields holding pointers to component widgets with getter methods (which basically allows those widgets to be replaced without the parent knowing or caring).
Refactoring of XML handler to remove huge if/else if/else construct.
Refectored large if / else if / else constructs in all non-falagard XML handlers to use a member function for each element type (rather than having all code in one huge function).

Added "PushedOff" rendering state for button style widgets.
Added "PushedOff" rendering state for Falagard Thumb base class.
Added: Ability to rename windows.
Added: CEGUISamplesConfig.h file to allow configuration of samples framework independently of the main config (saves recompiling everything just to change some sample setting).
Added: FPS readout to OpenGL base app in the samples framework.
Added: "PropertyLinkDefinition" element for Falagard system.
Added "controlPropery" attribute to SectionSpecififations under falagard to enable renering of section imagery to be controled via a named boolean property.
Added: mouse pass through feature in Window, to ignore mouse events. Nice for making a DefaultWindow transparent to the mouse regarding picking windows behind it.
Added: MSVC++ auto-linking for Ogre base app in samples framework.
Added: grab/restoreTextures in the OpenGL renderer to cache texture image data, and later restore it.
Added: Abstracted Logger interface to support user created custom loggers. (SF patch #1414121 by zap)
Added: DefaultLogger implementation (SF patch #1414121 by zap)
Added: page up/down key functionality to MultiLineEditbox (SF patch #1347376 by Dalfy)
Added: small script to recreate the binding generator for tolua++
Added: customized tolua++ binary. For exception handling support in generated binding code.
Added: missing exception definitions file needed to generate the bindings.
Added: README with instructions on how to generate the bindings.
Added: Documentation for some of the new features in the bundled tolua++ generator.
Added: When subscribing to events from "inside" Lua a self object can be registered as well to be passed along with the EventArgs.
Added: New WindowRenderer system, replacing previous system where the Window sub-class controlled the rendering process.
Added: Major update of the LuaScriptModule to support anonymous functions.
Added: Exception handling has been added for some functions.
Added: Falagard derivatives of DefaultWindow, DragContainer and ItemEntry with minimal StateImagery.
Added: executeEventHandler now accepts functions that are table fields.

Modified: Placed the integrated TinyXML into its own namespace (CEGUITinyXML) to prevent clashes in projects using another copy of TinyXML. (Patch #1294002).
Modified: Changed EventSet to operate without needing events to be pre-added, much like GlabalEventSet always did.
Modified: Removal of mass pre-specification of events for all classes using events.
Modified: Cflags to add include dir for CEGUI in CEGUI.pc.in (allows use of <CEGUI/...> form of include statement).
Modified: The "Lua and tolua++" module has been made a DLL on Windows machines.
Modified: Renamed System::setTooltip to System::setDefaultTooltip (Mantis #1Cool.
Modified: In the lua module, updated Window with casting helpers as member functions. eg. w:toFrameWindow()
Modified: Removed the Static,StaticText and StaticImage from CEGUIBase and implemented them in FalagardBase instead.
Modified: Updated to tolua++ 1.0.7
Modified: Moved LuaFunctor into its own files
Modified: Reimplemented the "late binding" effect from the v04 Lua module.
In v04 the function is always looked up by name. In CVS HEAD the actual Lua function is referenced, but now this will only occur the first time the event is triggered. This means that it's no longer necessary to have a function defined to subscribe it to an event. As long as the function has been created before the event occurs everything will be good Smile
Modified: Moved subscribeScriptedEvent into ScriptModule to allow more customized script subscription functionality.
Modified: Made the layout XML handler use subscribeScriptedEvent for Event tags instead of subscribeEvent with ScriptFunctor
Modified: Removal of "tolua_outside" stuff that was no longer needed.
Modified: Moved the declaration/definition of base window factories into its own files.
Modified: Removal of WidgetSets folder, and it's contents.
Modified: Removed unnecessary getSingleton and getSingletonPtr from manager classes.
Modified: The script module now throws ScriptException.
Modified: Removal of TextItem as falagard now handles that exclusively.
Modified: Moved all rendering member functions out of base classes an into Falagard rendering classes.
Modified: Removal of virtually all rendering and layout related Window properties from CEGUIBase - a few are moved to FalagardBase, the rest must be implemented via XML.
Modified: Removal of TaharezLook and WindowsLook modules from the system.
Modified: Removal of MetricsMode system, and all non-unified interface and properties from Window (and related fixes to other classes).
Modified: Elimination of RenderableElement and derived classes.
Modified: Moved to a C preprocessor macro system for widget module creation.
Modified: Removal of abstract createXXX methods from widget base classes - the looknfeel system now auto-creates these widgets when specified within the XML.

Bug fix: OpenGLRenderer was producing errors and not cleaning up state changes properly (thanx muhkuh25)
Bug fix: OpenGLRenderer was broken when compiled for x86-64.
Bug Fix: ListboxItem::getOwnerWindow should be const
Bug Fix: ListboxItem::getOwnerWindow should not take a Window* argument.
Bug Fix: Scheme::resourcesLoaded was always returning true.
Bug Fix: PropertyHelper::stringToImage was not handling empty string case.
Bug Fix: Editbox::onCharacter was setting the event as handled even if nothing was done.
Bug Fix: Added shift/ctrl/alt support to the OpenGL sample driver (injects LeftXXX)
Bug Fix: The command line renderer selector does no longer ask if there is only one renderer available.
Bug Fix: Fixed window resizing for the OpenGL Sample driver.
Bug Fix: fixed const correctness for "String::utf8_stream_len" SF patch #1367423
Bug Fix: Detect "window->addChildWindow(window);" and do nothing instead of actually trying.
Bug Fix: Added missing performChildWindowLayout to Scrollbar::onScrollConfigChanged to allow making a look'n'feel with a thumb that sizes to indicate document size.
Bug fix: const correctness for Window::getLookNFeel
Bug fix: FrameWindow, isTitlebarEnabled and isCloseButtonEnabled were return the opposite of what they should.
Bug Fix: FrameWindow should do relayout if text changes to allow using a fontdim in the titlebar dimensions.
Bug Fix: Changing the default mouse cursor in the System object will now update the cursor immediately where appropriate. (Ticket #17).
Bug Fix: Fixed case in StaticText where default text area was always used if frame was disabled.


Added text node support to both parser (Xerces and TinyXML)
Added support in handler with no action as default
Updated to the latest version of TinyXML in order to allow CDATA section in XML text node (verbatim text)
Update of GUILayout handler in order to support long value in properties.
Update GUILayout XML Files
Update Falagard sample in order to illustrate the use of long properties with multilineeditbox widget. (note the example text is not really the best we can have)


Added AutoWindow tag to xml layouts to fetch a window created by the look'n'feel or the base widget itself.

Made the XML writing system aware of falagard when determining property default values.

Made Property::writeXMLToStream virtual to allow properties to take a little more control. The WindowRenderer and LookNFeel properties now only write if the window type is not a falagard mapping.

Switched PropertyHelper to use std::ostringstream as the output is much nicer. Changes property default values to the new format where needed.

Added isAutoWindow member that returns true if the window has "__auto_" in its name. (a flag is set in the constructor).

Added a setting to Window to specify that it should never write XML no matter what if activated. Tooltips get this set by default by System.

Added a property ban list, to provide a system for mapping which properties should be written to XML. in the respective addProperties member functions checks have been added and som properties are banned if we are an auto window. There will be changes to many more widgets when I've had some sleep Wink
So far it's Window, FrameWindow, Scrollbar, Thumb (enough to export Demo8 from inside itself fairly cleanly).

Fixed a few indentation mishaps.

Added WidgetComponent::findPropertyInitialiser to find by property name (used in property default value determination)
Added WidgetLookFeel::findPropertyInitialiser to find by property name (used in property default value determination)
Added WidgetLookFeel::findWidgetComponent to find by component name suffix (used in property default value determination)

Fixed the GUILayout XML handler regarding the new property stuff.

Yes. It's huge!

OK. Now a question for Paul: I have added a <TextProperty> and <FontProperty> tag to Falagard for the TextComponent. It should be obvious what they do... Should I commit this now or after we release? I'm asking as we did say that the ~26th should be code freeze date back then...

Another one for all of you:
Many of you probably know that I've been working on a listbox replacement for a long time. It does'nt look like it will make it to 0.5.0, but I'm about 95% done and I could really use some feedback on it soon.

If I post a patch will anyone test it?

User avatar
Just can't stay away
Just can't stay away
Posts: 149
Joined: Wed Jan 12, 2005 12:06

Postby gcarlton » Mon Mar 27, 2006 23:27

Amazing work! :pint:

I'll be switching over when its released. The combination of lua, layouts and falagard almost completely eliminates the need for C++ glue code, so its a great step forward.

User avatar
CEGUI Project Lead
Posts: 6760
Joined: Wed Jan 12, 2005 12:06
Location: England

Postby CrazyEddie » Tue Mar 28, 2006 08:36

I also think that we will not make that original date. There are still many outstanding issues, ranging from specific things such as XML writing that still needs some things sorting out to much more overall changes, such as those relating to the MIT license change.

Similar to Lindquist, I have been spending my time elsewhere, and so there are a number of things I said I would do which I have not. So, in effect we're pretty much in the same kind of position we were when we first spoke about preparing the release - this means that we still have that work to be done :oops:

Those new Falagard elements sound fine, you can commit those when you like. It would be cool if you could email me some text to add to the reference doc (don't change the wiki version, since that's intended to be in sync with the current release, and I already have a couple of other bits to add / update when 0.5.0 finally arrives).

I'll certainly look at your patch if you post it. Maybe people here would like to offer an opinion on something; would they prefer that we delay 0.5.0 a while longer while the new listbox is integrated and tested, or, have an earlier release of 0.5.0 but without the new listbox (which, depending on implementation details, could mean it would not arrive until 0.6.0).

User avatar
Home away from home
Home away from home
Posts: 1178
Joined: Wed Jan 12, 2005 12:06
Location: The Hague, The Netherlands

Postby scriptkid » Tue Mar 28, 2006 09:31

Wow guys, that list have become very long! :-)

Dalfy and I had a little chat (email) about the editor deadline. We actually targeted for this week too, and the 0.5 compatible layout editor is shaping up nicely, mainly thanks to Dalfy! However, with both a fulltime job it will be tough to complete it for the full 100%, including installers/distributions, wiki updates and such. (Just plain code-wise should still be quite doable.)

Besides, the overhaul to the branching, the re-versioning and the wiki update so far, have taken chunks of my time, but I thought it was/is needed in order to support both 0.4 and 0.5 libraries in the future.

Shall we continue this thread to propose a new deadline then? Or remove some pressure by taken a “when it’s done” approach? I would vote for the first one though, to at least stay in our “momentum” ;-)

User avatar
Quite a regular
Quite a regular
Posts: 80
Joined: Fri Apr 29, 2005 21:58

Postby granx » Thu Mar 30, 2006 06:55

Well, I just thought I would add my $0.02, as any concerned user might want to do...

Since this list is already so big, and the developers of CEGUI are anticipating the users to have a few problems when upgrading, maybe the Listbox changes can get pushed back to the next minor or major release.

That said, I can understand that you might not want to do many consecutive releases that require code changes when users upgrade. This would be motivation to push the release back, and cram as many "build breakers" into this release as possible.

I'm sure the general public is anxious to try out the new Listbox and give you feedback, but many of us work off releases, and want to sync up. Since I'm ignorant as to exactly how much work it will be to upgrade, I will trust your decisions about when to freeze for the next release.

Good luck in your other projects and thanks for CEGUI. It has been working very well for me. HTML rendering would be a major feature request, and about the last major feature I see CEGUI lacking. Maybe support for that can be on the roadmap as a goal for an upcoming release?

User avatar
CEGUI Team (Retired)
Posts: 130
Joined: Tue Oct 11, 2005 16:13
Location: Paris, FRANCE

Postby Dalfy » Sat Apr 01, 2006 08:56

The listbox widget does not introduce breaking change cause it is a completely new widget. I think we should put it in the release in order to get some user feedback until lindquist dive into changing the other similar widget.

User avatar
Just can't stay away
Just can't stay away
Posts: 136
Joined: Sun Apr 03, 2005 14:18
Location: Holbaek, Denmark

Postby jacmoe » Sat Apr 01, 2006 20:52

Thank you for posting this!
It is evident that 0.5.0 is going to be a great release!
And a perfect opportunity for me to CEGUI-fy my project! :D

User avatar
CEGUI Team (Retired)
Posts: 770
Joined: Mon Jan 24, 2005 21:20
Location: Copenhagen, Denmark

Postby lindquist » Tue Apr 04, 2006 18:06

I have made a patch containing the new listbox against the latest SVN trunk code.


The file has CRLF line endings...
You'll need to add the new files to the project before building too.
Demo8 will be transformed into a small test of the new widget.

Feedback is VERY much appreciated as this will be going into the base library soon.

And please ask away if you have any trouble.

User avatar
CEGUI Team (Retired)
Posts: 770
Joined: Mon Jan 24, 2005 21:20
Location: Copenhagen, Denmark

Postby lindquist » Tue Apr 04, 2006 18:23

This post is regarding the latest Falagard additions:

the <TextComponent> now allows <TextProperty> and <FontProperty> elements.
Order is Text, TextProperty, FontProperty.
Both new elements are optional.

If a <TextProperty> is given the text that will be rendered for the TextComponent will be fetched from the property given:
<TextProperty name="Text2" />

If a <Text> element with a non-empty string attribute has already been given, and (in this case) the 'Text2' property contains an empty string, the text string from the <Text> element will be used.

This makes it possible to create a default text value.

The <FontProperty> element is very similar to <TextProperty> it just controls the font instead. The same "defaults scheme" apply.

Additionally the <Child> element now supports a 'renderer' attribute. Which is optional like the looknfeel attrib. Can be useful for making layouts in falagard without need to FalagardMap all the looknfeels...

User avatar
CEGUI Team (Retired)
Posts: 770
Joined: Mon Jan 24, 2005 21:20
Location: Copenhagen, Denmark

Postby lindquist » Wed Apr 05, 2006 17:49

Dalfy convinced me that a branch would be alot easier, so if you'd like to check out the new widget but dont want to apply the patch manually, you can just grab a copy of the 'pre-itemlistbox' branch :)

User avatar
CEGUI Team (Retired)
Posts: 130
Joined: Tue Oct 11, 2005 16:13
Location: Paris, FRANCE

Postby Dalfy » Thu Apr 06, 2006 20:01

Branch are for this purpose and are cheap why not using them ?

Just popping in
Just popping in
Posts: 1
Joined: Sat Apr 08, 2006 22:41

Lua 5.1

Postby amenra » Sat Apr 08, 2006 23:33


I am not a user of CEGUI yet but I have question and I hope it has not been answered or it is simply silly. Will the 5.0 version include Lua 5.1? This might be interesting because of the incremental garbage collector. If not - Did you use an own namespace for lua? Otherwise I am sceptical how to use it in a Project that is using lua 5.1 (linking issues).

Apart from that question: Great work!


User avatar
Not too shy to talk
Not too shy to talk
Posts: 22
Joined: Wed Jan 12, 2005 12:06

Postby muhkuh » Mon Apr 10, 2006 14:00

lindquist wrote:Dalfy convinced me that a branch would be alot easier, so if you'd like to check out the new widget but dont want to apply the patch manually, you can just grab a copy of the 'pre-itemlistbox' branch :)

Great thing that. I really was waiting for these. Am I right assuming this means the nice tree control can be ported to the new system and be integrated into the trunk soon? My in game property editor would really profit a lot from fully customizable tree or list elements.

User avatar
CEGUI Team (Retired)
Posts: 770
Joined: Mon Jan 24, 2005 21:20
Location: Copenhagen, Denmark

Postby lindquist » Mon Apr 10, 2006 14:48

it's definitely possible to implement a treecontrol based on this new listbox, as putting a list inside one of the items is pretty trivial.

but.. right now, I need to get some feedback on this one, before I start making derivatives...

Just popping in
Just popping in
Posts: 15
Joined: Fri Apr 07, 2006 19:05

Postby Sneftel » Mon Apr 10, 2006 16:27

Couple questions...

Is the 0.5.0 release scheduled for "any day now" or "any week now"?

Also, I noted a move to the MIT license in a couple of posts; will that be coming with 0.5.0, or later?


Return to “CEGUI Library Development Discussion”

Who is online

Users browsing this forum: No registered users and 4 guests