<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://cegui.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kornerr</id>
		<title>CEGUI Wiki - Crazy Eddie's GUI System (Open Source) - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://cegui.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kornerr"/>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/Special:Contributions/Kornerr"/>
		<updated>2026-09-04T18:44:31Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5422</id>
		<title>Porting tips and changes from 0.7.X to 0.8.X</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5422"/>
				<updated>2014-07-02T16:06:48Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: root window and rearranged my previous edits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.7}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Introduction|2=&lt;br /&gt;
The 0.8.x branch has already seen releases. Please see the sourceforge page for tarball downloads.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Major renames/API changes|2=&lt;br /&gt;
* FalagardWRBase was renamed to CoreWindowRendererSet&lt;br /&gt;
* Windows now don't have absolute names! Every window's name only has to be unique in it's parent window. Therefore WindowManager::getSingleton().getWindow no longer made sense and was removed. If root's name was &amp;quot;Root&amp;quot; and your the window name was &amp;quot;Root/Stuff/After/Root/Name&amp;quot;, you can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;). It's recommended to migrate to a more encapsulated model.&lt;br /&gt;
* CEGUI::GUIContext class has been created that is responsible for injecting input and event handling, setting the default font, setting the root window, setting a default tooltip object and type, and manipulating the mouse cursor.&lt;br /&gt;
* CEGUI::GUIContext needs time impulses injected separately! You should also inject time pulses into CEGUI::System. This API &amp;quot;wart&amp;quot; may disappear in future versions.&lt;br /&gt;
* CEGUI::MouseCursor is no longer a singleton, and can be accessed and manipulated from CEGUI::GUIContext.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=General|2=&lt;br /&gt;
* All XML attributes must now be in lowercase, e.g. &amp;lt;WidgetLook Name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt; must be &amp;lt;WidgetLook name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt;&lt;br /&gt;
* PropertyHelper has been turned into a template class, instead of PropertyHelper::uintToString you do PropertyHelper&amp;lt;uint&amp;gt;::toString, instead of PropertyHelper::stringToUint you do PropertyHelper&amp;lt;uint&amp;gt;::fromString&lt;br /&gt;
* All instances of the word caret that were incorrectly spelt 'carat' have been corrected.  This affects all APIs, properties, events and datafiles.&lt;br /&gt;
* Window::EventWindowUpdated renamed to Window::EventUpdated and the associated string is changed from &amp;quot;WindowUpdate&amp;quot; to &amp;quot;Updated&amp;quot;&lt;br /&gt;
* ListHeader::SegmentNameSuffix changed type from character array to CEGUI::String&lt;br /&gt;
* BiDiVisualMapping renamed to BidiVisualMapping.  Also renamed the files, so CEGUIBiDiVisualMapping.h is now CEGUIBidiVisualMapping.h&lt;br /&gt;
* class colour renamed to Colour, as a side effect the &amp;quot;colour&amp;quot; interpolator is now &amp;quot;Colour&amp;quot; interpolator, this breaks animation definitions!&lt;br /&gt;
* Point typedef removed, please use Vector2 instead&lt;br /&gt;
* Many event string values changed to match the C++ name (but without the Event prefix).  A list of which strings changed value will appear here soon.&lt;br /&gt;
* Window::setRestoreCapture renamed to Window::setRestoreOldCapture&lt;br /&gt;
* CEGUI now supports custom memory allocation, see [[Memory Allocation]] to check if this concerns you or not.&lt;br /&gt;
* Window::addChildWindow renamed to Window::addChild, Window::removeChildWindow renamed to Window::removeChild, several other methods (mostly in layout containers) changed from *ChildWindow* to *Child*&lt;br /&gt;
* CEGUI::String can now be just a typedef or a class, depending on String configuration (CEGUI can now use std::string as CEGUI::String for apps not requiring unicode)&lt;br /&gt;
* Window::getChild_impl method completely removed, it was only used by Window::getParentPixelSize, shouldn't be hard to replace&lt;br /&gt;
* Vector2, Vector3, Size and Rect are now templated, you should use Vector2&amp;lt;float&amp;gt; (or just Vector2&amp;lt;&amp;gt; as a shortcut since float is the default type) instead of Vector2, UVector2 class was removed, UVector2 is now just a typedef to Vector2&amp;lt;UDim&amp;gt;. Same with Vector3, Size and Rect.&lt;br /&gt;
* Texture::saveToMemory is renamed Texture::blitToMemory.&lt;br /&gt;
* Renderer and Texture interfaces changed in order to support named textures.&lt;br /&gt;
* Window::isDisabled(localOnly) is now split into Window::isDisabled (= old isDisabled(true) and Window::isEffectiveDisabled (= old isDisabled(false))&lt;br /&gt;
* Window::isVisible(localOnly) is now split into Window::isVisible (= old isDisabled(true) and Window::isEffectiveVisible (= old isVisible(false))&lt;br /&gt;
* WindowManager::loadWindowLayout is renamed to WindowManager::loadLayoutFromFile&lt;br /&gt;
* NamedXMLResourceManager::create is renamed to NamedXMLResourceManager::createFromFile  (Ex. CEGUI::SchemeManager::createFromFile)&lt;br /&gt;
* CEGUI::DefaultLogger no longer throws const char* but a real exception in setLogFilename - http://www.cegui.org.uk/mantis/view.php?id=443&lt;br /&gt;
* CEGUI now has inbuilt copy, cut, paste support, if you used a custom solution, you might want to check CEGUI::Clipboard and System::inject{Copy,Cut,Paste}Request&lt;br /&gt;
* CEGUI::ProgressBar::getStep renamed to getStepSize for consistency with setStepSize&lt;br /&gt;
* CEGUI::WidgetLookManager::parseLookNFeelSpecification is now called parseLookNFeelSpecificationFromFile, variants for loading from string and raw data container have been added&lt;br /&gt;
* XRotation, YRotation, ZRotation properties merged into the new Rotation property, which is a Quaternion.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Property Name Changes|2=&lt;br /&gt;
* Property from Window called &amp;quot;ZOrderChangeEnabled&amp;quot; renamed to &amp;quot;ZOrderingEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;MouseButtonDownAutoRepeat&amp;quot; renamed to &amp;quot;MouseAutoRepeatEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;CustomTooltipType&amp;quot; renamed to &amp;quot;TooltipType&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;Tooltip&amp;quot; renamed to &amp;quot;TooltipText&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;RiseOnClick&amp;quot; renamed to &amp;quot;RiseOnClickEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;UnifiedAreaRect&amp;quot; renamed to &amp;quot;Area&amp;quot;, &amp;quot;UnifiedSize&amp;quot; renamed to &amp;quot;Size&amp;quot;, etc...&lt;br /&gt;
* Property &amp;quot;MaxEditTextLength&amp;quot; renamed to &amp;quot;MaxTextLength&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Event Name Changes|2=&lt;br /&gt;
* EventMouseEnters renamed to EventMouseEntersSurface (old name removed)&lt;br /&gt;
* EventMouseLeaves renamed to EventMouseLeavesSurface (old name removed)&lt;br /&gt;
* CheckStateChanged renamed to SelectStateChanged (for ToggleButton (old Checkbox))&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Image and ImageManager|2=&lt;br /&gt;
* Image::draw renamed to Image::render&lt;br /&gt;
* Image class is now an abstract interface.  BasicImage implementation is provided, and used for internally created Image objects.&lt;br /&gt;
* Imageset class is removed. It remains a CEGUI format that allows to conveniently define multiple images on one texture but the data is no longer stored in any class. When Imageset is loaded, the ImageManager creates a new BasicImage for each of the images in the imageset. Only the images themselves will remain after imageset is loaded. You now use the new ImageManager to access defined images.&lt;br /&gt;
* ImagesetManager class is removed.  You now use the new ImageManager.&lt;br /&gt;
* Images belonging to a certain imageset can be accessed like so: &amp;quot;ImageSetName/ImageName&amp;quot; (ex. &amp;quot;AlfiskoSkin/MouseArrow&amp;quot;).&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=GUIContext|2=&lt;br /&gt;
A lot of API has been moved from CEGUI::System to CEGUI::GUIContext. CEGUI now allows you to create multiple independent GUI contexts with their own input injection.&lt;br /&gt;
&lt;br /&gt;
As a rule of thumb, whenever you see &amp;quot;There is no CEGUI::System::some_foobar_method method&amp;quot;, it is likely that you can replace the call with CEGUI::System::getSingleton().getDefaultGUIContext().someFoobarMethod(). This holds for all the System::inject* methods for example.&lt;br /&gt;
&lt;br /&gt;
Exceptions from the rule:&lt;br /&gt;
* CEGUI::System::getSingleton().renderGUI() &amp;amp;rarr; CEGUI::System::getSingleton().renderAllGUIContexts()&lt;br /&gt;
* CEGUI::System::getSingleton().setDefaultMouseCursor(&amp;quot;TaharezLook&amp;quot;, &amp;quot;MouseArrow&amp;quot;) ? CEGUI::System::getSingleton().getDefaultGUIContext().getMouseCursor().setDefaultImage(&amp;quot;TaharezLook/MouseArrow&amp;quot;)&lt;br /&gt;
* CEGUI::System::getSingleton().setGUISheet(root) &amp;amp;rarr; CEGUI::System::getSingleton().getDefaultGUIContext().setRootWindow(root)&lt;br /&gt;
&lt;br /&gt;
WindowManager::getSingleton().getWindow() was removed. You can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;).&lt;br /&gt;
To get Root Window you can call GUIContext::getRootWindow();&lt;br /&gt;
&lt;br /&gt;
SIDE NOTE: The chain call of methods CEGUI::System::getSingleton().getDefaultGUIContext() should be called as rarely as possible, instead one should keep it's result in appropriate variable.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=PyCEGUI|2=&lt;br /&gt;
* EventSet.subscribeEvent now has a different, more pythonic syntax, any python callable (bound member function, free function, lambda, functor, ...) is allowed (EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance, &amp;quot;someMethodInIt&amp;quot;) is now EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance.someMethodInIt)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Datafiles|2=&lt;br /&gt;
* All XML datafiles must specify a version attribute. Example: &amp;lt;GUILayout '''version=&amp;quot;4&amp;quot;'''&amp;gt;&lt;br /&gt;
* All attributes in datafiles must begin with a lower-case letter. Example: &amp;lt;Property '''n'''ame=&amp;quot;Alpha&amp;quot;               '''v'''alue=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
* See '''Property Name Changes''' and '''Event Name Changes''' above&lt;br /&gt;
&lt;br /&gt;
* '''.looknfeel:'''&lt;br /&gt;
** &amp;lt;Falagard version=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
** old: &amp;lt;Image '''type'''=&amp;quot;TopEdge&amp;quot; '''imageset'''=&amp;quot;TaharezLook&amp;quot; '''image'''=&amp;quot;TitlebarTop&amp;quot; /&amp;gt; &amp;lt;br /&amp;gt;new: &amp;lt;Image '''component'''=&amp;quot;TopEdge&amp;quot; '''name'''=&amp;quot;TaharezLook/TitlebarTop&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: MaxEditTextLength &amp;amp;rarr; MaxTextLength&lt;br /&gt;
** Change: MouseButtonDownAutoRepeat &amp;amp;rarr; MouseAutoRepeatEnabled&lt;br /&gt;
** Change: DimOperator &amp;amp;rarr; OperatorDim. Please compare [http://static.cegui.org.uk/docs/0.7.9/fal_element_ref.html#fal_elem_ref_sec_10 0.7.9] with [http://static.cegui.org.uk/docs/current/fal_element_ref.html#fal_elem_ref_sec_operatordim latest] for functional change description&lt;br /&gt;
*** old formatting: VALUE1 { DIMOPERATOR() { VALUE2 } }&amp;lt;br /&amp;gt; new formatting: OPERATORDIM() { VALUE1, VALUE2 }&lt;br /&gt;
* '''.scheme:'''&lt;br /&gt;
** &amp;lt;GUIScheme name=&amp;quot;MySkin&amp;quot; version=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
** Change: &amp;lt;WindowRendererSet Filename=&amp;quot;CEGUIFalagardWRBase&amp;quot; /&amp;gt; &amp;amp;rarr; &amp;lt;WindowRendererSet filename=&amp;quot;CEGUICoreWindowRendererSet&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: renderer=&amp;quot;Falagard/... &amp;amp;rarr; renderer=&amp;quot;Core/...&lt;br /&gt;
** Change: &amp;quot;Core/SystemButton&amp;quot; &amp;amp;rarr; &amp;quot;Core/Button&amp;quot;&lt;br /&gt;
** Change: &amp;quot;CEGUI/Checkbox&amp;quot; &amp;amp;rarr; &amp;quot;CEGUI/ToggleButton&amp;quot;&lt;br /&gt;
* '''.layout:'''&lt;br /&gt;
** &amp;lt;GUILayout version=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
** UnifiedPosition, UnifiedAreaRect, UnifiedSize, UnifiedMinSize, UnifiedMaxSize &amp;amp;rarr; Position, Area, Size, MinSize, MaxSize&lt;br /&gt;
** Tooltip &amp;amp;rarr; TooltipText&lt;br /&gt;
** old: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;set:Buttons image:Settings&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt;new: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;Buttons/Settings&amp;quot; /&amp;gt;&lt;br /&gt;
* '''.imageset:'''&lt;br /&gt;
** &amp;lt;Imageset version=&amp;quot;2&amp;quot; ... /&amp;gt;&lt;br /&gt;
* '''.font:'''&lt;br /&gt;
** &amp;lt;Font version=&amp;quot;3&amp;quot; ... /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you build your own version of ceed (see this guide - http://cegui.org.uk/wiki/Building_CEED_for_Windows), you can then use the ceed-migrate tool to automate and batch all of the changes discussed in this section. See here for a quick guide to using ceed-migrate - http://cegui.org.uk/wiki/Using_CEED-Migrate&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Manuals]]&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5421</id>
		<title>Porting tips and changes from 0.7.X to 0.8.X</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5421"/>
				<updated>2014-07-02T15:49:30Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: mouse cursor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.7}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Introduction|2=&lt;br /&gt;
The 0.8.x branch has already seen releases. Please see the sourceforge page for tarball downloads.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Major renames/API changes|2=&lt;br /&gt;
* FalagardWRBase was renamed to CoreWindowRendererSet&lt;br /&gt;
* Windows now don't have absolute names! Every window's name only has to be unique in it's parent window. Therefore WindowManager::getSingleton().getWindow no longer made sense and was removed. If root's name was &amp;quot;Root&amp;quot; and your the window name was &amp;quot;Root/Stuff/After/Root/Name&amp;quot;, you can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;). It's recommended to migrate to a more encapsulated model.&lt;br /&gt;
* CEGUI::GUIContext class has been created that is responsible for injecting input and event handling, setting the default font, setting the root window, setting a default tooltip object and type, and manipulating the mouse cursor.&lt;br /&gt;
* CEGUI::GUIContext needs time impulses injected separately! You should also inject time pulses into CEGUI::System. This API &amp;quot;wart&amp;quot; may disappear in future versions.&lt;br /&gt;
* CEGUI::MouseCursor is no longer a singleton, and can be accessed and manipulated from CEGUI::GUIContext.&lt;br /&gt;
** CEGUI::System::getSingleton().setDefaultMouseCursor(&amp;quot;TaharezLook&amp;quot;, &amp;quot;MouseArrow&amp;quot;) &amp;amp;rarr; CEGUI::System::getSingleton().getDefaultGUIContext().getMouseCursor().setDefaultImage(&amp;quot;TaharezLook/MouseArrow&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=General|2=&lt;br /&gt;
* All XML attributes must now be in lowercase, e.g. &amp;lt;WidgetLook Name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt; must be &amp;lt;WidgetLook name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt;&lt;br /&gt;
* PropertyHelper has been turned into a template class, instead of PropertyHelper::uintToString you do PropertyHelper&amp;lt;uint&amp;gt;::toString, instead of PropertyHelper::stringToUint you do PropertyHelper&amp;lt;uint&amp;gt;::fromString&lt;br /&gt;
* All instances of the word caret that were incorrectly spelt 'carat' have been corrected.  This affects all APIs, properties, events and datafiles.&lt;br /&gt;
* Window::EventWindowUpdated renamed to Window::EventUpdated and the associated string is changed from &amp;quot;WindowUpdate&amp;quot; to &amp;quot;Updated&amp;quot;&lt;br /&gt;
* ListHeader::SegmentNameSuffix changed type from character array to CEGUI::String&lt;br /&gt;
* BiDiVisualMapping renamed to BidiVisualMapping.  Also renamed the files, so CEGUIBiDiVisualMapping.h is now CEGUIBidiVisualMapping.h&lt;br /&gt;
* class colour renamed to Colour, as a side effect the &amp;quot;colour&amp;quot; interpolator is now &amp;quot;Colour&amp;quot; interpolator, this breaks animation definitions!&lt;br /&gt;
* Point typedef removed, please use Vector2 instead&lt;br /&gt;
* Many event string values changed to match the C++ name (but without the Event prefix).  A list of which strings changed value will appear here soon.&lt;br /&gt;
* Window::setRestoreCapture renamed to Window::setRestoreOldCapture&lt;br /&gt;
* CEGUI now supports custom memory allocation, see [[Memory Allocation]] to check if this concerns you or not.&lt;br /&gt;
* Window::addChildWindow renamed to Window::addChild, Window::removeChildWindow renamed to Window::removeChild, several other methods (mostly in layout containers) changed from *ChildWindow* to *Child*&lt;br /&gt;
* CEGUI::String can now be just a typedef or a class, depending on String configuration (CEGUI can now use std::string as CEGUI::String for apps not requiring unicode)&lt;br /&gt;
* Window::getChild_impl method completely removed, it was only used by Window::getParentPixelSize, shouldn't be hard to replace&lt;br /&gt;
* Vector2, Vector3, Size and Rect are now templated, you should use Vector2&amp;lt;float&amp;gt; (or just Vector2&amp;lt;&amp;gt; as a shortcut since float is the default type) instead of Vector2, UVector2 class was removed, UVector2 is now just a typedef to Vector2&amp;lt;UDim&amp;gt;. Same with Vector3, Size and Rect.&lt;br /&gt;
* Texture::saveToMemory is renamed Texture::blitToMemory.&lt;br /&gt;
* Renderer and Texture interfaces changed in order to support named textures.&lt;br /&gt;
* Window::isDisabled(localOnly) is now split into Window::isDisabled (= old isDisabled(true) and Window::isEffectiveDisabled (= old isDisabled(false))&lt;br /&gt;
* Window::isVisible(localOnly) is now split into Window::isVisible (= old isDisabled(true) and Window::isEffectiveVisible (= old isVisible(false))&lt;br /&gt;
* WindowManager::loadWindowLayout is renamed to WindowManager::loadLayoutFromFile&lt;br /&gt;
* NamedXMLResourceManager::create is renamed to NamedXMLResourceManager::createFromFile  (Ex. CEGUI::SchemeManager::createFromFile)&lt;br /&gt;
* CEGUI::DefaultLogger no longer throws const char* but a real exception in setLogFilename - http://www.cegui.org.uk/mantis/view.php?id=443&lt;br /&gt;
* CEGUI now has inbuilt copy, cut, paste support, if you used a custom solution, you might want to check CEGUI::Clipboard and System::inject{Copy,Cut,Paste}Request&lt;br /&gt;
* CEGUI::ProgressBar::getStep renamed to getStepSize for consistency with setStepSize&lt;br /&gt;
* CEGUI::WidgetLookManager::parseLookNFeelSpecification is now called parseLookNFeelSpecificationFromFile, variants for loading from string and raw data container have been added&lt;br /&gt;
* XRotation, YRotation, ZRotation properties merged into the new Rotation property, which is a Quaternion.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Property Name Changes|2=&lt;br /&gt;
* Property from Window called &amp;quot;ZOrderChangeEnabled&amp;quot; renamed to &amp;quot;ZOrderingEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;MouseButtonDownAutoRepeat&amp;quot; renamed to &amp;quot;MouseAutoRepeatEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;CustomTooltipType&amp;quot; renamed to &amp;quot;TooltipType&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;Tooltip&amp;quot; renamed to &amp;quot;TooltipText&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;RiseOnClick&amp;quot; renamed to &amp;quot;RiseOnClickEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;UnifiedAreaRect&amp;quot; renamed to &amp;quot;Area&amp;quot;, &amp;quot;UnifiedSize&amp;quot; renamed to &amp;quot;Size&amp;quot;, etc...&lt;br /&gt;
* Property &amp;quot;MaxEditTextLength&amp;quot; renamed to &amp;quot;MaxTextLength&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Event Name Changes|2=&lt;br /&gt;
* EventMouseEnters renamed to EventMouseEntersSurface (old name removed)&lt;br /&gt;
* EventMouseLeaves renamed to EventMouseLeavesSurface (old name removed)&lt;br /&gt;
* CheckStateChanged renamed to SelectStateChanged (for ToggleButton (old Checkbox))&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Image and ImageManager|2=&lt;br /&gt;
* Image::draw renamed to Image::render&lt;br /&gt;
* Image class is now an abstract interface.  BasicImage implementation is provided, and used for internally created Image objects.&lt;br /&gt;
* Imageset class is removed. It remains a CEGUI format that allows to conveniently define multiple images on one texture but the data is no longer stored in any class. When Imageset is loaded, the ImageManager creates a new BasicImage for each of the images in the imageset. Only the images themselves will remain after imageset is loaded. You now use the new ImageManager to access defined images.&lt;br /&gt;
* ImagesetManager class is removed.  You now use the new ImageManager.&lt;br /&gt;
* Images belonging to a certain imageset can be accessed like so: &amp;quot;ImageSetName/ImageName&amp;quot; (ex. &amp;quot;AlfiskoSkin/MouseArrow&amp;quot;).&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=GUIContext|2=&lt;br /&gt;
A lot of API has been moved from CEGUI::System to CEGUI::GUIContext. CEGUI now allows you to create multiple independent GUI contexts with their own input injection.&lt;br /&gt;
&lt;br /&gt;
As a rule of thumb, whenever you see &amp;quot;There is no CEGUI::System::some_foobar_method method&amp;quot;, it is likely that you can replace the call with CEGUI::System::getSingleton().getDefaultGUIContext().someFoobarMethod(). This holds for all the System::inject* methods for example.&lt;br /&gt;
&lt;br /&gt;
Exceptions from the rule:&lt;br /&gt;
* CEGUI::System::getSingleton().renderGUI() &amp;amp;rarr; CEGUI::System::getSingleton().renderAllGUIContexts()&lt;br /&gt;
&lt;br /&gt;
WindowManager::getSingleton().getWindow() was removed. You can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;).&lt;br /&gt;
To get Root Window you can call GUIContext::getRootWindow();&lt;br /&gt;
&lt;br /&gt;
SIDE NOTE: The chain call of methods CEGUI::System::getSingleton().getDefaultGUIContext() should be called as rarely as possible, instead one should keep it's result in appropriate variable.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=PyCEGUI|2=&lt;br /&gt;
* EventSet.subscribeEvent now has a different, more pythonic syntax, any python callable (bound member function, free function, lambda, functor, ...) is allowed (EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance, &amp;quot;someMethodInIt&amp;quot;) is now EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance.someMethodInIt)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Datafiles|2=&lt;br /&gt;
* All XML datafiles must specify a version attribute. Example: &amp;lt;GUILayout '''version=&amp;quot;4&amp;quot;'''&amp;gt;&lt;br /&gt;
* All attributes in datafiles must begin with a lower-case letter. Example: &amp;lt;Property '''n'''ame=&amp;quot;Alpha&amp;quot;               '''v'''alue=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
* See '''Property Name Changes''' and '''Event Name Changes''' above&lt;br /&gt;
&lt;br /&gt;
* '''.looknfeel:'''&lt;br /&gt;
** &amp;lt;Falagard version=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
** old: &amp;lt;Image '''type'''=&amp;quot;TopEdge&amp;quot; '''imageset'''=&amp;quot;TaharezLook&amp;quot; '''image'''=&amp;quot;TitlebarTop&amp;quot; /&amp;gt; &amp;lt;br /&amp;gt;new: &amp;lt;Image '''component'''=&amp;quot;TopEdge&amp;quot; '''name'''=&amp;quot;TaharezLook/TitlebarTop&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: MaxEditTextLength &amp;amp;rarr; MaxTextLength&lt;br /&gt;
** Change: MouseButtonDownAutoRepeat &amp;amp;rarr; MouseAutoRepeatEnabled&lt;br /&gt;
** Change: DimOperator &amp;amp;rarr; OperatorDim. Please compare [http://static.cegui.org.uk/docs/0.7.9/fal_element_ref.html#fal_elem_ref_sec_10 0.7.9] with [http://static.cegui.org.uk/docs/current/fal_element_ref.html#fal_elem_ref_sec_operatordim latest] for functional change description&lt;br /&gt;
*** old formatting: VALUE1 { DIMOPERATOR() { VALUE2 } }&amp;lt;br /&amp;gt; new formatting: OPERATORDIM() { VALUE1, VALUE2 }&lt;br /&gt;
* '''.scheme:'''&lt;br /&gt;
** &amp;lt;GUIScheme name=&amp;quot;MySkin&amp;quot; version=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
** Change: &amp;lt;WindowRendererSet Filename=&amp;quot;CEGUIFalagardWRBase&amp;quot; /&amp;gt; &amp;amp;rarr; &amp;lt;WindowRendererSet filename=&amp;quot;CEGUICoreWindowRendererSet&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: renderer=&amp;quot;Falagard/... &amp;amp;rarr; renderer=&amp;quot;Core/...&lt;br /&gt;
** Change: &amp;quot;Core/SystemButton&amp;quot; &amp;amp;rarr; &amp;quot;Core/Button&amp;quot;&lt;br /&gt;
** Change: &amp;quot;CEGUI/Checkbox&amp;quot; &amp;amp;rarr; &amp;quot;CEGUI/ToggleButton&amp;quot;&lt;br /&gt;
* '''.layout:'''&lt;br /&gt;
** &amp;lt;GUILayout version=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
** UnifiedPosition, UnifiedAreaRect, UnifiedSize, UnifiedMinSize, UnifiedMaxSize &amp;amp;rarr; Position, Area, Size, MinSize, MaxSize&lt;br /&gt;
** Tooltip &amp;amp;rarr; TooltipText&lt;br /&gt;
** old: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;set:Buttons image:Settings&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt;new: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;Buttons/Settings&amp;quot; /&amp;gt;&lt;br /&gt;
* '''.imageset:'''&lt;br /&gt;
** &amp;lt;Imageset version=&amp;quot;2&amp;quot; ... /&amp;gt;&lt;br /&gt;
* '''.font:'''&lt;br /&gt;
** &amp;lt;Font version=&amp;quot;3&amp;quot; ... /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you build your own version of ceed (see this guide - http://cegui.org.uk/wiki/Building_CEED_for_Windows), you can then use the ceed-migrate tool to automate and batch all of the changes discussed in this section. See here for a quick guide to using ceed-migrate - http://cegui.org.uk/wiki/Using_CEED-Migrate&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Manuals]]&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5420</id>
		<title>Porting tips and changes from 0.7.X to 0.8.X</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5420"/>
				<updated>2014-07-02T15:33:50Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: renderAllGUIContexts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.7}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Introduction|2=&lt;br /&gt;
The 0.8.x branch has already seen releases. Please see the sourceforge page for tarball downloads.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Major renames/API changes|2=&lt;br /&gt;
* FalagardWRBase was renamed to CoreWindowRendererSet&lt;br /&gt;
* Windows now don't have absolute names! Every window's name only has to be unique in it's parent window. Therefore WindowManager::getSingleton().getWindow no longer made sense and was removed. If root's name was &amp;quot;Root&amp;quot; and your the window name was &amp;quot;Root/Stuff/After/Root/Name&amp;quot;, you can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;). It's recommended to migrate to a more encapsulated model.&lt;br /&gt;
* CEGUI::GUIContext class has been created that is responsible for injecting input and event handling, setting the default font, setting the root window, setting a default tooltip object and type, and manipulating the mouse cursor.&lt;br /&gt;
* CEGUI::GUIContext needs time impulses injected separately! You should also inject time pulses into CEGUI::System. This API &amp;quot;wart&amp;quot; may disappear in future versions.&lt;br /&gt;
* CEGUI::MouseCursor is no longer a singleton, and can be accessed and manipulated from CEGUI::GUIContext.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=General|2=&lt;br /&gt;
* All XML attributes must now be in lowercase, e.g. &amp;lt;WidgetLook Name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt; must be &amp;lt;WidgetLook name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt;&lt;br /&gt;
* PropertyHelper has been turned into a template class, instead of PropertyHelper::uintToString you do PropertyHelper&amp;lt;uint&amp;gt;::toString, instead of PropertyHelper::stringToUint you do PropertyHelper&amp;lt;uint&amp;gt;::fromString&lt;br /&gt;
* All instances of the word caret that were incorrectly spelt 'carat' have been corrected.  This affects all APIs, properties, events and datafiles.&lt;br /&gt;
* Window::EventWindowUpdated renamed to Window::EventUpdated and the associated string is changed from &amp;quot;WindowUpdate&amp;quot; to &amp;quot;Updated&amp;quot;&lt;br /&gt;
* ListHeader::SegmentNameSuffix changed type from character array to CEGUI::String&lt;br /&gt;
* BiDiVisualMapping renamed to BidiVisualMapping.  Also renamed the files, so CEGUIBiDiVisualMapping.h is now CEGUIBidiVisualMapping.h&lt;br /&gt;
* class colour renamed to Colour, as a side effect the &amp;quot;colour&amp;quot; interpolator is now &amp;quot;Colour&amp;quot; interpolator, this breaks animation definitions!&lt;br /&gt;
* Point typedef removed, please use Vector2 instead&lt;br /&gt;
* Many event string values changed to match the C++ name (but without the Event prefix).  A list of which strings changed value will appear here soon.&lt;br /&gt;
* Window::setRestoreCapture renamed to Window::setRestoreOldCapture&lt;br /&gt;
* CEGUI now supports custom memory allocation, see [[Memory Allocation]] to check if this concerns you or not.&lt;br /&gt;
* Window::addChildWindow renamed to Window::addChild, Window::removeChildWindow renamed to Window::removeChild, several other methods (mostly in layout containers) changed from *ChildWindow* to *Child*&lt;br /&gt;
* CEGUI::String can now be just a typedef or a class, depending on String configuration (CEGUI can now use std::string as CEGUI::String for apps not requiring unicode)&lt;br /&gt;
* Window::getChild_impl method completely removed, it was only used by Window::getParentPixelSize, shouldn't be hard to replace&lt;br /&gt;
* Vector2, Vector3, Size and Rect are now templated, you should use Vector2&amp;lt;float&amp;gt; (or just Vector2&amp;lt;&amp;gt; as a shortcut since float is the default type) instead of Vector2, UVector2 class was removed, UVector2 is now just a typedef to Vector2&amp;lt;UDim&amp;gt;. Same with Vector3, Size and Rect.&lt;br /&gt;
* Texture::saveToMemory is renamed Texture::blitToMemory.&lt;br /&gt;
* Renderer and Texture interfaces changed in order to support named textures.&lt;br /&gt;
* Window::isDisabled(localOnly) is now split into Window::isDisabled (= old isDisabled(true) and Window::isEffectiveDisabled (= old isDisabled(false))&lt;br /&gt;
* Window::isVisible(localOnly) is now split into Window::isVisible (= old isDisabled(true) and Window::isEffectiveVisible (= old isVisible(false))&lt;br /&gt;
* WindowManager::loadWindowLayout is renamed to WindowManager::loadLayoutFromFile&lt;br /&gt;
* NamedXMLResourceManager::create is renamed to NamedXMLResourceManager::createFromFile  (Ex. CEGUI::SchemeManager::createFromFile)&lt;br /&gt;
* CEGUI::DefaultLogger no longer throws const char* but a real exception in setLogFilename - http://www.cegui.org.uk/mantis/view.php?id=443&lt;br /&gt;
* CEGUI now has inbuilt copy, cut, paste support, if you used a custom solution, you might want to check CEGUI::Clipboard and System::inject{Copy,Cut,Paste}Request&lt;br /&gt;
* CEGUI::ProgressBar::getStep renamed to getStepSize for consistency with setStepSize&lt;br /&gt;
* CEGUI::WidgetLookManager::parseLookNFeelSpecification is now called parseLookNFeelSpecificationFromFile, variants for loading from string and raw data container have been added&lt;br /&gt;
* XRotation, YRotation, ZRotation properties merged into the new Rotation property, which is a Quaternion.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Property Name Changes|2=&lt;br /&gt;
* Property from Window called &amp;quot;ZOrderChangeEnabled&amp;quot; renamed to &amp;quot;ZOrderingEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;MouseButtonDownAutoRepeat&amp;quot; renamed to &amp;quot;MouseAutoRepeatEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;CustomTooltipType&amp;quot; renamed to &amp;quot;TooltipType&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;Tooltip&amp;quot; renamed to &amp;quot;TooltipText&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;RiseOnClick&amp;quot; renamed to &amp;quot;RiseOnClickEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;UnifiedAreaRect&amp;quot; renamed to &amp;quot;Area&amp;quot;, &amp;quot;UnifiedSize&amp;quot; renamed to &amp;quot;Size&amp;quot;, etc...&lt;br /&gt;
* Property &amp;quot;MaxEditTextLength&amp;quot; renamed to &amp;quot;MaxTextLength&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Event Name Changes|2=&lt;br /&gt;
* EventMouseEnters renamed to EventMouseEntersSurface (old name removed)&lt;br /&gt;
* EventMouseLeaves renamed to EventMouseLeavesSurface (old name removed)&lt;br /&gt;
* CheckStateChanged renamed to SelectStateChanged (for ToggleButton (old Checkbox))&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Image and ImageManager|2=&lt;br /&gt;
* Image::draw renamed to Image::render&lt;br /&gt;
* Image class is now an abstract interface.  BasicImage implementation is provided, and used for internally created Image objects.&lt;br /&gt;
* Imageset class is removed. It remains a CEGUI format that allows to conveniently define multiple images on one texture but the data is no longer stored in any class. When Imageset is loaded, the ImageManager creates a new BasicImage for each of the images in the imageset. Only the images themselves will remain after imageset is loaded. You now use the new ImageManager to access defined images.&lt;br /&gt;
* ImagesetManager class is removed.  You now use the new ImageManager.&lt;br /&gt;
* Images belonging to a certain imageset can be accessed like so: &amp;quot;ImageSetName/ImageName&amp;quot; (ex. &amp;quot;AlfiskoSkin/MouseArrow&amp;quot;).&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=GUIContext|2=&lt;br /&gt;
A lot of API has been moved from CEGUI::System to CEGUI::GUIContext. CEGUI now allows you to create multiple independent GUI contexts with their own input injection.&lt;br /&gt;
&lt;br /&gt;
As a rule of thumb, whenever you see &amp;quot;There is no CEGUI::System::some_foobar_method method&amp;quot;, it is likely that you can replace the call with CEGUI::System::getSingleton().getDefaultGUIContext().someFoobarMethod(). This holds for all the System::inject* methods for example.&lt;br /&gt;
&lt;br /&gt;
Exceptions from the rule:&lt;br /&gt;
* CEGUI::System::getSingleton().renderGUI() &amp;amp;rarr; CEGUI::System::getSingleton().renderAllGUIContexts()&lt;br /&gt;
&lt;br /&gt;
WindowManager::getSingleton().getWindow() was removed. You can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;).&lt;br /&gt;
To get Root Window you can call GUIContext::getRootWindow();&lt;br /&gt;
&lt;br /&gt;
SIDE NOTE: The chain call of methods CEGUI::System::getSingleton().getDefaultGUIContext() should be called as rarely as possible, instead one should keep it's result in appropriate variable.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=PyCEGUI|2=&lt;br /&gt;
* EventSet.subscribeEvent now has a different, more pythonic syntax, any python callable (bound member function, free function, lambda, functor, ...) is allowed (EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance, &amp;quot;someMethodInIt&amp;quot;) is now EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance.someMethodInIt)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Datafiles|2=&lt;br /&gt;
* All XML datafiles must specify a version attribute. Example: &amp;lt;GUILayout '''version=&amp;quot;4&amp;quot;'''&amp;gt;&lt;br /&gt;
* All attributes in datafiles must begin with a lower-case letter. Example: &amp;lt;Property '''n'''ame=&amp;quot;Alpha&amp;quot;               '''v'''alue=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
* See '''Property Name Changes''' and '''Event Name Changes''' above&lt;br /&gt;
&lt;br /&gt;
* '''.looknfeel:'''&lt;br /&gt;
** &amp;lt;Falagard version=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
** old: &amp;lt;Image '''type'''=&amp;quot;TopEdge&amp;quot; '''imageset'''=&amp;quot;TaharezLook&amp;quot; '''image'''=&amp;quot;TitlebarTop&amp;quot; /&amp;gt; &amp;lt;br /&amp;gt;new: &amp;lt;Image '''component'''=&amp;quot;TopEdge&amp;quot; '''name'''=&amp;quot;TaharezLook/TitlebarTop&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: MaxEditTextLength &amp;amp;rarr; MaxTextLength&lt;br /&gt;
** Change: MouseButtonDownAutoRepeat &amp;amp;rarr; MouseAutoRepeatEnabled&lt;br /&gt;
** Change: DimOperator &amp;amp;rarr; OperatorDim. Please compare [http://static.cegui.org.uk/docs/0.7.9/fal_element_ref.html#fal_elem_ref_sec_10 0.7.9] with [http://static.cegui.org.uk/docs/current/fal_element_ref.html#fal_elem_ref_sec_operatordim latest] for functional change description&lt;br /&gt;
*** old formatting: VALUE1 { DIMOPERATOR() { VALUE2 } }&amp;lt;br /&amp;gt; new formatting: OPERATORDIM() { VALUE1, VALUE2 }&lt;br /&gt;
* '''.scheme:'''&lt;br /&gt;
** &amp;lt;GUIScheme name=&amp;quot;MySkin&amp;quot; version=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
** Change: &amp;lt;WindowRendererSet Filename=&amp;quot;CEGUIFalagardWRBase&amp;quot; /&amp;gt; &amp;amp;rarr; &amp;lt;WindowRendererSet filename=&amp;quot;CEGUICoreWindowRendererSet&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: renderer=&amp;quot;Falagard/... &amp;amp;rarr; renderer=&amp;quot;Core/...&lt;br /&gt;
** Change: &amp;quot;Core/SystemButton&amp;quot; &amp;amp;rarr; &amp;quot;Core/Button&amp;quot;&lt;br /&gt;
** Change: &amp;quot;CEGUI/Checkbox&amp;quot; &amp;amp;rarr; &amp;quot;CEGUI/ToggleButton&amp;quot;&lt;br /&gt;
* '''.layout:'''&lt;br /&gt;
** &amp;lt;GUILayout version=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
** UnifiedPosition, UnifiedAreaRect, UnifiedSize, UnifiedMinSize, UnifiedMaxSize &amp;amp;rarr; Position, Area, Size, MinSize, MaxSize&lt;br /&gt;
** Tooltip &amp;amp;rarr; TooltipText&lt;br /&gt;
** old: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;set:Buttons image:Settings&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt;new: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;Buttons/Settings&amp;quot; /&amp;gt;&lt;br /&gt;
* '''.imageset:'''&lt;br /&gt;
** &amp;lt;Imageset version=&amp;quot;2&amp;quot; ... /&amp;gt;&lt;br /&gt;
* '''.font:'''&lt;br /&gt;
** &amp;lt;Font version=&amp;quot;3&amp;quot; ... /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you build your own version of ceed (see this guide - http://cegui.org.uk/wiki/Building_CEED_for_Windows), you can then use the ceed-migrate tool to automate and batch all of the changes discussed in this section. See here for a quick guide to using ceed-migrate - http://cegui.org.uk/wiki/Using_CEED-Migrate&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Manuals]]&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Animation_System&amp;diff=4788</id>
		<title>Animation System</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Animation_System&amp;diff=4788"/>
				<updated>2012-05-31T14:18:13Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: /* Via code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.7}} {{VersionBadge|0.8}}&lt;br /&gt;
{{VersionAtLeast|0.7.2}}&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
'''You have to inject time pulses (see System::injectTimePulse), otherwise CEGUI has no idea time is passing and the animations will always be stuck at the position they started at.'''&lt;br /&gt;
&lt;br /&gt;
== Basic concepts ==&lt;br /&gt;
In UI lots of animations are likely to be shared (for example widget specific animation), so CEGUI splits the animation between definition and instance. You can have one animation definition animating large amount of Windows, having only one animation per window is also fine (one animation with only one instance). Animation definitions aren't tied to window type, the only condition  is that the target must have all affected (target properties of all affectors inside the animation) and source properties (all source properties in key frames, if any).&lt;br /&gt;
&lt;br /&gt;
== Purpose of animation classes ==&lt;br /&gt;
&lt;br /&gt;
=== Animation Definition (class {{DoxygenClass|Animation|0.7}}) ===&lt;br /&gt;
This class holds defining data for animations. Specifically duration, replay mode, auto start and list of Affectors. This class doesn't directly animate anything. You have to instantiate it via CEGUI::AnimationManager::instantiateAnimation.&lt;br /&gt;
&lt;br /&gt;
=== Affector (class {{DoxygenClass|Affector|0.7}}) ===&lt;br /&gt;
Affector affects (changes the value of) one property. It holds application method (more about that later), target property, used interpolator and list of key frames.&lt;br /&gt;
&lt;br /&gt;
=== Key Frame (class {{DoxygenClass|KeyFrame|0.7}}) ===&lt;br /&gt;
Key frame represents the value of affected property at given time position. It holds value, source property and time position. Key frames can use values of properties of the affected window. If source property is not empty, property is saved when animation starts and used as value for this key frame.&lt;br /&gt;
&lt;br /&gt;
=== Animation Instance (class {{DoxygenClass|AnimationInstance|0.7}}) ===&lt;br /&gt;
This class uses animation definition to animate Window. It holds animation position and playback speed.&lt;br /&gt;
&lt;br /&gt;
=== Animation Manager (class {{DoxygenClass|AnimationManager|0.7}}) ===&lt;br /&gt;
Singleton class. You use it to create new animation definitions and instantiate existing animation definitions. (You should not construct Animation definitions or Animation instances directly, always use Animation Manager).&lt;br /&gt;
&lt;br /&gt;
=== Interpolator (class {{DoxygenClass|Interpolator|0.7}}) ===&lt;br /&gt;
To be able to animate smoothly between 2 discrete keyframes, interpolators had to be introduced. You don't have to use them directly, everything is done for you in the animation classes. You only need to understand their internals if you need custom interpolator (as all basic interpolators are included in CEGUI, if you find some property that can't be animated with stock interpolators, let us know).&lt;br /&gt;
&lt;br /&gt;
== Defining animations ==&lt;br /&gt;
&lt;br /&gt;
=== Via code ===&lt;br /&gt;
This sample animation takes 0.3 seconds and in that time, it fades the window and rotates it 10 degrees around Y axis.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   CEGUI::Animation* anim = CEGUI::AnimationManager::getSingleton().createAnimation(&amp;quot;Testing&amp;quot;);&lt;br /&gt;
   anim-&amp;gt;setDuration(0.3f); // duration in seconds&lt;br /&gt;
   anim-&amp;gt;setReplayMode(CEGUI::Animation::RM_Once); // when this animation is started, only play it once, then stop&lt;br /&gt;
   &lt;br /&gt;
   // now we define affector inside our Testing animation&lt;br /&gt;
   {&lt;br /&gt;
    // this affector changes YRotation and interpolates keyframes with float interpolator&lt;br /&gt;
    CEGUI::Affector* affector = anim-&amp;gt;createAffector(&amp;quot;YRotation&amp;quot;, &amp;quot;float&amp;quot;);&lt;br /&gt;
    // at 0.0 seconds, the animation should set YRotation to 0 degrees&lt;br /&gt;
    affector-&amp;gt;createKeyFrame(0.0f, &amp;quot;0.0&amp;quot;);&lt;br /&gt;
    // at 0.3 seconds, YRotation should be 10.0 degrees and animation should progress towards this in an accelerating manner&lt;br /&gt;
    affector-&amp;gt;createKeyFrame(0.3f, &amp;quot;10.0&amp;quot;, CEGUI::KeyFrame::P_QuadraticAccelerating);&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   // animation can have more than one affectors! lets define another affector that changes Alpha&lt;br /&gt;
   {&lt;br /&gt;
    // this affector will again use float interpolator&lt;br /&gt;
    CEGUI::Affector* affector = anim-&amp;gt;createAffector(&amp;quot;Alpha&amp;quot;, &amp;quot;float&amp;quot;);&lt;br /&gt;
    affector-&amp;gt;createKeyFrame(0.0f, &amp;quot;1.0&amp;quot;); // at 0.0 seconds, set alpha to 1.0&lt;br /&gt;
    affector-&amp;gt;createKeyFrame(0.3f, &amp;quot;0.5&amp;quot;, CEGUI::KeyFrame::P_QuadraticDecelerating); // at 0.3 seconds, set alpha to 0.5, now decelerating!&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Via [[Falagard]] looknfeel XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;WidgetLook ...&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
  &amp;lt;AnimationDefinition name=&amp;quot;Testing&amp;quot; duration=&amp;quot;0.3&amp;quot; replayMode=&amp;quot;once&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;Alpha&amp;quot; interpolator=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; value=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.3&amp;quot; value=&amp;quot;0.5&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;YRotation&amp;quot; interpolator=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.3&amp;quot; value=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
  &amp;lt;/AnimationDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/WidgetLook&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Animating colours example, with [http://www.cegui.org.uk/docs/current/xml_animation.html#xml_animation_keyframe KeyFrame sourceProperty] and the colour [http://www.cegui.org.uk/docs/current/xml_animation.html#xml_animation_affector interpolator]:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;AnimationDefinition name=&amp;quot;NormalToHover&amp;quot; duration=&amp;quot;0.2&amp;quot; replayMode=&amp;quot;once&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;CurrentColour&amp;quot; interpolator=&amp;quot;colour&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; sourceProperty=&amp;quot;NormalColour&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.2&amp;quot; sourceProperty=&amp;quot;HoverColour&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
  &amp;lt;/AnimationDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Via separate animation list XML (AnimationManager::loadAnimationsFromXML) ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Animations&amp;gt;&lt;br /&gt;
  &amp;lt;AnimationDefinition name=&amp;quot;Testing&amp;quot; duration=&amp;quot;0.3&amp;quot; replayMode=&amp;quot;once&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;Alpha&amp;quot; interpolator=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; value=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.3&amp;quot; value=&amp;quot;0.5&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;YRotation&amp;quot; interpolator=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.3&amp;quot; value=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
  &amp;lt;/AnimationDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/Animations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Instantiating animations ==&lt;br /&gt;
If you created the animation in code or via separate animation definition file, you have to instantiate it (only [[Falagard]] instantiates and sets target automatically).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::AnimationInstance* instance = CEGUI::AnimationManager::getSingleton().instantiateAnimation(anim);&lt;br /&gt;
// after we instantiate the animation, we have to set its target window&lt;br /&gt;
instance-&amp;gt;setTargetWindow(targetWindow);&lt;br /&gt;
&lt;br /&gt;
// at this point, you can start this instance and see the results&lt;br /&gt;
instance-&amp;gt;start();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Connecting events and animations ==&lt;br /&gt;
You often want your animation to start when something happens (Mouse gets over the widget, new FrameWindow is opened, etc). You have two options to achieve this.&lt;br /&gt;
&lt;br /&gt;
If you already are using XML to define animations, the easiest solution is to use the auto event subscription facility. You add pairs of Event name and action that should happen with the animation (&amp;quot;Start&amp;quot;, &amp;quot;Stop&amp;quot;, &amp;quot;Pause&amp;quot;, &amp;quot;Unpause&amp;quot;, etc.) and when target window is set, these subscriptions are automatically made for your convenienve.&lt;br /&gt;
&lt;br /&gt;
Both [[Falagard]] and Animations.xml approaches are the same with regards to this. This XML snippet starts the animation when mouse enters the target window's area.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;AnimationDefinition name=&amp;quot;Testing&amp;quot; duration=&amp;quot;0.3&amp;quot; replayMode=&amp;quot;once&amp;quot;&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;Subscription event=&amp;quot;MouseEntersArea&amp;quot; action=&amp;quot;Start&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/AnimationDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doing this in code is much more powerful (you can subscribe to a window that's different than target window) but also more messy:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
windowWithEvent-&amp;gt;subscribeEvent(CEGUI::Window::EventMouseEntersArea, CEGUI::Event::Subscriber(&amp;amp;CEGUI::AnimationInstance::handleStart, instance));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also do this from a Lua script:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI.WindowManager:getSingleton():getWindow(&amp;quot;WindowName&amp;quot;):subscribeEvent(&amp;quot;MouseEnter&amp;quot;, &amp;quot;luafunctionname&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This code sets up the window specified in WindowName, the name of that window on creation or from the XML &amp;quot;Name&amp;quot; property, to react to the mouse entering it by calling the Lua function specified in luafunctionname. The Lua function name argument should be the name, without trailing (), to a function declared in Lua or exported to Lua from C.&lt;br /&gt;
&lt;br /&gt;
== Progression ==&lt;br /&gt;
As I created the implementation, I noticed that linear animations look really boring and predictable. Often times accelerating or decelerating anims will look much better and lively. To make creating those easier, I introduced progression to key frames. This enum tells the system how to progress towards the key frame that holds the progression (that means progression on the first key frame is never used!). The default is linear, meaning that progress towards the keyframe is completely linear. Try the other options yourself to see the differences.&lt;br /&gt;
=== animations.xml example ===&lt;br /&gt;
Here we have edited the example animation so that the alpha value uses the quadratic deceleration progression. This will make the alpha value drop quickly in the first frames but the speed of the change will decrease quickly and give a smooth finish to the transition.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Animations&amp;gt;&lt;br /&gt;
  &amp;lt;AnimationDefinition name=&amp;quot;Testing&amp;quot; duration=&amp;quot;0.3&amp;quot; replayMode=&amp;quot;once&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;Alpha&amp;quot; interpolator=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; value=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.3&amp;quot; value=&amp;quot;0.5&amp;quot; progression=&amp;quot;quadratic decelerating&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;YRotation&amp;quot; interpolator=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.3&amp;quot; value=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
  &amp;lt;/AnimationDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/Animations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Possible values for this property, in XML, are:&lt;br /&gt;
* &amp;quot;linear&amp;quot;: (default value) Simple linear transition. Same rate of progression for every frame. &lt;br /&gt;
* &amp;quot;discrete&amp;quot;: Abrupt progression, goes from one value straight to the next one.&lt;br /&gt;
* &amp;quot;quadratic accelerating&amp;quot;: Starts slow but accelerates to very fast towards the end.&lt;br /&gt;
* &amp;quot;quadratic decelerating&amp;quot;: Starts very fast but comes smoothly to a halt in the end.&lt;br /&gt;
&lt;br /&gt;
== Application methods ==&lt;br /&gt;
Affectors offer 3 different &amp;quot;application methods&amp;quot;. One is absolute, meaning that the keyframe value is taken as absolute and is directly set to the property after interpolation. The other 2 are relative. That means that when the animation starts, the old values of properties are saved and later used when animating. AM_Relative means saved_value + interpolated_value, AM_RelativeMultiply means saved_value * interpolated_float.&lt;br /&gt;
&lt;br /&gt;
=== animations.xml example: ===&lt;br /&gt;
In the following example we have changed the rotation affector to do relative rotation instead of absolute, which is default. This means that whatever rotation the window had when the animation started it will add the new rotation to that value. The absolute method would have reset the rotation to 0 in the first key frame and then proceeded to rotate it by 10 degrees during 0.3 seconds.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Animations&amp;gt;&lt;br /&gt;
  &amp;lt;AnimationDefinition name=&amp;quot;Testing&amp;quot; duration=&amp;quot;0.3&amp;quot; replayMode=&amp;quot;once&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;Alpha&amp;quot; interpolator=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; value=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.3&amp;quot; value=&amp;quot;0.5&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;YRotation&amp;quot; interpolator=&amp;quot;float&amp;quot; applicationMethod=&amp;quot;relative&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.3&amp;quot; value=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
  &amp;lt;/AnimationDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/Animations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Possible values for this property, in XML, are:&lt;br /&gt;
* &amp;quot;absolute&amp;quot;: (default setting) The interpolated value is set as the new property value.&lt;br /&gt;
* &amp;quot;relative&amp;quot;: The interpolated value is added to the starting value of the property.&lt;br /&gt;
* &amp;quot;relative multiply&amp;quot;: The interpolated value is multiplied with the starting value of the property.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuals]]&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Animation_System&amp;diff=4787</id>
		<title>Animation System</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Animation_System&amp;diff=4787"/>
				<updated>2012-05-31T14:17:29Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: /* Via code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.7}} {{VersionBadge|0.8}}&lt;br /&gt;
{{VersionAtLeast|0.7.2}}&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
'''You have to inject time pulses (see System::injectTimePulse), otherwise CEGUI has no idea time is passing and the animations will always be stuck at the position they started at.'''&lt;br /&gt;
&lt;br /&gt;
== Basic concepts ==&lt;br /&gt;
In UI lots of animations are likely to be shared (for example widget specific animation), so CEGUI splits the animation between definition and instance. You can have one animation definition animating large amount of Windows, having only one animation per window is also fine (one animation with only one instance). Animation definitions aren't tied to window type, the only condition  is that the target must have all affected (target properties of all affectors inside the animation) and source properties (all source properties in key frames, if any).&lt;br /&gt;
&lt;br /&gt;
== Purpose of animation classes ==&lt;br /&gt;
&lt;br /&gt;
=== Animation Definition (class {{DoxygenClass|Animation|0.7}}) ===&lt;br /&gt;
This class holds defining data for animations. Specifically duration, replay mode, auto start and list of Affectors. This class doesn't directly animate anything. You have to instantiate it via CEGUI::AnimationManager::instantiateAnimation.&lt;br /&gt;
&lt;br /&gt;
=== Affector (class {{DoxygenClass|Affector|0.7}}) ===&lt;br /&gt;
Affector affects (changes the value of) one property. It holds application method (more about that later), target property, used interpolator and list of key frames.&lt;br /&gt;
&lt;br /&gt;
=== Key Frame (class {{DoxygenClass|KeyFrame|0.7}}) ===&lt;br /&gt;
Key frame represents the value of affected property at given time position. It holds value, source property and time position. Key frames can use values of properties of the affected window. If source property is not empty, property is saved when animation starts and used as value for this key frame.&lt;br /&gt;
&lt;br /&gt;
=== Animation Instance (class {{DoxygenClass|AnimationInstance|0.7}}) ===&lt;br /&gt;
This class uses animation definition to animate Window. It holds animation position and playback speed.&lt;br /&gt;
&lt;br /&gt;
=== Animation Manager (class {{DoxygenClass|AnimationManager|0.7}}) ===&lt;br /&gt;
Singleton class. You use it to create new animation definitions and instantiate existing animation definitions. (You should not construct Animation definitions or Animation instances directly, always use Animation Manager).&lt;br /&gt;
&lt;br /&gt;
=== Interpolator (class {{DoxygenClass|Interpolator|0.7}}) ===&lt;br /&gt;
To be able to animate smoothly between 2 discrete keyframes, interpolators had to be introduced. You don't have to use them directly, everything is done for you in the animation classes. You only need to understand their internals if you need custom interpolator (as all basic interpolators are included in CEGUI, if you find some property that can't be animated with stock interpolators, let us know).&lt;br /&gt;
&lt;br /&gt;
== Defining animations ==&lt;br /&gt;
&lt;br /&gt;
=== Via code ===&lt;br /&gt;
This sample animation takes 0.3 seconds and in that time, it fades the window and rotates it 10 degrees around Y axis.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   CEGUI::Animation* anim = CEGUI::AnimationManager::getSingleton().createAnimation(&amp;quot;Testing&amp;quot;);&lt;br /&gt;
   anim-&amp;gt;setDuration(0.3f); // duration in seconds&lt;br /&gt;
   anim-&amp;gt;setReplayMode(CEGUI::Animation::RM_Once); // when this animation is started, only play it once, then stop&lt;br /&gt;
   &lt;br /&gt;
   // now we define affector inside our Testing animation&lt;br /&gt;
   {&lt;br /&gt;
    // this affector changes YRotation and interpolates keyframes with float interpolator&lt;br /&gt;
    CEGUI::Affector* affector = anim-&amp;gt;createAffector(&amp;quot;YRotation&amp;quot;, &amp;quot;float&amp;quot;);&lt;br /&gt;
    // at 0.0 seconds, the animation should set YRotation to 0 degrees&lt;br /&gt;
    affector-&amp;gt;createKeyFrame(0.0f, &amp;quot;0.0&amp;quot;);&lt;br /&gt;
    // at 0.3 seconds, YRotation should be 10.0 degrees and animation should progress towards this in an accelerating manner&lt;br /&gt;
    affector-&amp;gt;createKeyFrame(0.3f, &amp;quot;10.0&amp;quot;, CEGUI::KeyFrame::P_QuadraticAccelerating);&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   // animation can have more than one affectors! lets define another affector that changes Alpha&lt;br /&gt;
   {&lt;br /&gt;
    // this affector will again use float interpolator&lt;br /&gt;
    CEGUI::Affector* affector = anim-&amp;gt;createAffector(&amp;quot;Alpha&amp;quot;, &amp;quot;float&amp;quot;);&lt;br /&gt;
    affector-&amp;gt;createKeyFrame(0.0f, &amp;quot;1.0&amp;quot;); // at 0.0 seconds, set alpha to 1.0&lt;br /&gt;
    affector-&amp;gt;createKeyFrame(0.3f, &amp;quot;0.5&amp;quot;, CEGUI::KeyFrame::P_QuadraticDecelerating); // at 1.0 seconds, set alpha to 0.5, now decelerating!&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Via [[Falagard]] looknfeel XML ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;WidgetLook ...&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
  &amp;lt;AnimationDefinition name=&amp;quot;Testing&amp;quot; duration=&amp;quot;0.3&amp;quot; replayMode=&amp;quot;once&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;Alpha&amp;quot; interpolator=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; value=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.3&amp;quot; value=&amp;quot;0.5&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;YRotation&amp;quot; interpolator=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.3&amp;quot; value=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
  &amp;lt;/AnimationDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/WidgetLook&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Animating colours example, with [http://www.cegui.org.uk/docs/current/xml_animation.html#xml_animation_keyframe KeyFrame sourceProperty] and the colour [http://www.cegui.org.uk/docs/current/xml_animation.html#xml_animation_affector interpolator]:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;AnimationDefinition name=&amp;quot;NormalToHover&amp;quot; duration=&amp;quot;0.2&amp;quot; replayMode=&amp;quot;once&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;CurrentColour&amp;quot; interpolator=&amp;quot;colour&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; sourceProperty=&amp;quot;NormalColour&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.2&amp;quot; sourceProperty=&amp;quot;HoverColour&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
  &amp;lt;/AnimationDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Via separate animation list XML (AnimationManager::loadAnimationsFromXML) ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Animations&amp;gt;&lt;br /&gt;
  &amp;lt;AnimationDefinition name=&amp;quot;Testing&amp;quot; duration=&amp;quot;0.3&amp;quot; replayMode=&amp;quot;once&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;Alpha&amp;quot; interpolator=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; value=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.3&amp;quot; value=&amp;quot;0.5&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;YRotation&amp;quot; interpolator=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.3&amp;quot; value=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
  &amp;lt;/AnimationDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/Animations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Instantiating animations ==&lt;br /&gt;
If you created the animation in code or via separate animation definition file, you have to instantiate it (only [[Falagard]] instantiates and sets target automatically).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::AnimationInstance* instance = CEGUI::AnimationManager::getSingleton().instantiateAnimation(anim);&lt;br /&gt;
// after we instantiate the animation, we have to set its target window&lt;br /&gt;
instance-&amp;gt;setTargetWindow(targetWindow);&lt;br /&gt;
&lt;br /&gt;
// at this point, you can start this instance and see the results&lt;br /&gt;
instance-&amp;gt;start();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Connecting events and animations ==&lt;br /&gt;
You often want your animation to start when something happens (Mouse gets over the widget, new FrameWindow is opened, etc). You have two options to achieve this.&lt;br /&gt;
&lt;br /&gt;
If you already are using XML to define animations, the easiest solution is to use the auto event subscription facility. You add pairs of Event name and action that should happen with the animation (&amp;quot;Start&amp;quot;, &amp;quot;Stop&amp;quot;, &amp;quot;Pause&amp;quot;, &amp;quot;Unpause&amp;quot;, etc.) and when target window is set, these subscriptions are automatically made for your convenienve.&lt;br /&gt;
&lt;br /&gt;
Both [[Falagard]] and Animations.xml approaches are the same with regards to this. This XML snippet starts the animation when mouse enters the target window's area.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;AnimationDefinition name=&amp;quot;Testing&amp;quot; duration=&amp;quot;0.3&amp;quot; replayMode=&amp;quot;once&amp;quot;&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;Subscription event=&amp;quot;MouseEntersArea&amp;quot; action=&amp;quot;Start&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/AnimationDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Doing this in code is much more powerful (you can subscribe to a window that's different than target window) but also more messy:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
windowWithEvent-&amp;gt;subscribeEvent(CEGUI::Window::EventMouseEntersArea, CEGUI::Event::Subscriber(&amp;amp;CEGUI::AnimationInstance::handleStart, instance));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also do this from a Lua script:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI.WindowManager:getSingleton():getWindow(&amp;quot;WindowName&amp;quot;):subscribeEvent(&amp;quot;MouseEnter&amp;quot;, &amp;quot;luafunctionname&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
This code sets up the window specified in WindowName, the name of that window on creation or from the XML &amp;quot;Name&amp;quot; property, to react to the mouse entering it by calling the Lua function specified in luafunctionname. The Lua function name argument should be the name, without trailing (), to a function declared in Lua or exported to Lua from C.&lt;br /&gt;
&lt;br /&gt;
== Progression ==&lt;br /&gt;
As I created the implementation, I noticed that linear animations look really boring and predictable. Often times accelerating or decelerating anims will look much better and lively. To make creating those easier, I introduced progression to key frames. This enum tells the system how to progress towards the key frame that holds the progression (that means progression on the first key frame is never used!). The default is linear, meaning that progress towards the keyframe is completely linear. Try the other options yourself to see the differences.&lt;br /&gt;
=== animations.xml example ===&lt;br /&gt;
Here we have edited the example animation so that the alpha value uses the quadratic deceleration progression. This will make the alpha value drop quickly in the first frames but the speed of the change will decrease quickly and give a smooth finish to the transition.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Animations&amp;gt;&lt;br /&gt;
  &amp;lt;AnimationDefinition name=&amp;quot;Testing&amp;quot; duration=&amp;quot;0.3&amp;quot; replayMode=&amp;quot;once&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;Alpha&amp;quot; interpolator=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; value=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.3&amp;quot; value=&amp;quot;0.5&amp;quot; progression=&amp;quot;quadratic decelerating&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;YRotation&amp;quot; interpolator=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.3&amp;quot; value=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
  &amp;lt;/AnimationDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/Animations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Possible values for this property, in XML, are:&lt;br /&gt;
* &amp;quot;linear&amp;quot;: (default value) Simple linear transition. Same rate of progression for every frame. &lt;br /&gt;
* &amp;quot;discrete&amp;quot;: Abrupt progression, goes from one value straight to the next one.&lt;br /&gt;
* &amp;quot;quadratic accelerating&amp;quot;: Starts slow but accelerates to very fast towards the end.&lt;br /&gt;
* &amp;quot;quadratic decelerating&amp;quot;: Starts very fast but comes smoothly to a halt in the end.&lt;br /&gt;
&lt;br /&gt;
== Application methods ==&lt;br /&gt;
Affectors offer 3 different &amp;quot;application methods&amp;quot;. One is absolute, meaning that the keyframe value is taken as absolute and is directly set to the property after interpolation. The other 2 are relative. That means that when the animation starts, the old values of properties are saved and later used when animating. AM_Relative means saved_value + interpolated_value, AM_RelativeMultiply means saved_value * interpolated_float.&lt;br /&gt;
&lt;br /&gt;
=== animations.xml example: ===&lt;br /&gt;
In the following example we have changed the rotation affector to do relative rotation instead of absolute, which is default. This means that whatever rotation the window had when the animation started it will add the new rotation to that value. The absolute method would have reset the rotation to 0 in the first key frame and then proceeded to rotate it by 10 degrees during 0.3 seconds.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Animations&amp;gt;&lt;br /&gt;
  &amp;lt;AnimationDefinition name=&amp;quot;Testing&amp;quot; duration=&amp;quot;0.3&amp;quot; replayMode=&amp;quot;once&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;Alpha&amp;quot; interpolator=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; value=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.3&amp;quot; value=&amp;quot;0.5&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
    &amp;lt;Affector property=&amp;quot;YRotation&amp;quot; interpolator=&amp;quot;float&amp;quot; applicationMethod=&amp;quot;relative&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.0&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;KeyFrame position=&amp;quot;0.3&amp;quot; value=&amp;quot;10&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/Affector&amp;gt;&lt;br /&gt;
  &amp;lt;/AnimationDefinition&amp;gt;&lt;br /&gt;
&amp;lt;/Animations&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Possible values for this property, in XML, are:&lt;br /&gt;
* &amp;quot;absolute&amp;quot;: (default setting) The interpolated value is set as the new property value.&lt;br /&gt;
* &amp;quot;relative&amp;quot;: The interpolated value is added to the starting value of the property.&lt;br /&gt;
* &amp;quot;relative multiply&amp;quot;: The interpolated value is multiplied with the starting value of the property.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuals]]&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=GSoC_Ideas&amp;diff=4764</id>
		<title>GSoC Ideas</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=GSoC_Ideas&amp;diff=4764"/>
				<updated>2012-02-19T14:34:03Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: /* Revamp Ogre Renderer to be more high level */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;IMPORTANT: Nothing is final, CEGUI might or might not get into GSoC! Feel free to add ideas though! :)&lt;br /&gt;
IMPORTANT2: I have arbitrarily chosen the mentors, mentors please add (ack) if you agree with my choice. Edit yourself out otherwise. Thanks!&lt;br /&gt;
&lt;br /&gt;
== Samples framework ==&lt;br /&gt;
Currently, samples are separate applications that are run separately. It would be nice to have some sort of a unified framework for defining samples. That way you can start CEGUIDemos executable and browse through samples, switching them, etc... New samples should be coded in C++, Python or Lua (all languages CEGUI officially supports), so this framework should have bindings for Python and Lua. The GUI for choosing samples should of course be done with CEGUI.&lt;br /&gt;
&lt;br /&gt;
Ogre has a similar sample framework (but samples can only be written in C++).&lt;br /&gt;
&lt;br /&gt;
Part of this task is to create new demos, improve existing ones or possibly remove them if they don't make sense anymore.&lt;br /&gt;
&lt;br /&gt;
difficulty: Medium&lt;br /&gt;
&lt;br /&gt;
mentors: Jamarr, fusion44 (ack), Kulik (ack)&lt;br /&gt;
&lt;br /&gt;
== New Font API ==&lt;br /&gt;
CEGUI exposes a lot of pain regarding text rendering and realtime 3D graphics to the user. You have to explicitly instantiate the font in sizes you will want, you have to instantiate bold, italic, etc variants as separate fonts, ... This task would involve changing the API around to make it simpler for the user. You would be able to define a Font you want to use and sizes would be loaded into textures dynamically (including garbage collection).&lt;br /&gt;
&lt;br /&gt;
freetype2 and/or fonts vs OpenGL/DX experience would be very valuable for this task&lt;br /&gt;
&lt;br /&gt;
difficulty: Medium&lt;br /&gt;
&lt;br /&gt;
mentors: Jamarr, Kulik (ack)&lt;br /&gt;
&lt;br /&gt;
== Revamp Ogre Renderer to be more high level ==&lt;br /&gt;
CEGUIOgreRenderer uses some intimate Ogre internals knowledge, we use lowlevel _ prefixed methods to draw. This is suboptimal for various reasons, the renderer is prone to Ogre changes that normally don't affect users. Render targets behave odd in OpenGL, DX10 and DX11 is somewhat supported in Ogre but CEGUI renders with various quirks with it, etc...&lt;br /&gt;
&lt;br /&gt;
The idea is to use high level Ogre constructs to render, ManualObject as GeometryBuffer, Materials instead of manually altering the state via Ogre::RenderTarget, etc... All of this has to have comparable performance to the old Ogre Renderer.&lt;br /&gt;
&lt;br /&gt;
difficulty: Medium&lt;br /&gt;
&lt;br /&gt;
mentors: Jamarr, fusion44 (ack), Kulik (ack), kornerr (ack)&lt;br /&gt;
&lt;br /&gt;
== Animation staging ==&lt;br /&gt;
Animation in CEGUI only works on a single window. It would be great if users were able to stage complex animations (think main menu appearing). The idea is to fire off multiple animations on a whole widget tree at the right times. This task also involves writing an editor in the CEGUI Unified Editor for it. The API should be rather simple and easy to do, the editor will be harder (IMO). You will be able to reuse timeline and other components from CEED for the editor.&lt;br /&gt;
&lt;br /&gt;
difficulty: Medium&lt;br /&gt;
&lt;br /&gt;
mentors: Jamarr, fusion44 (ack), Kulik (ack)&lt;br /&gt;
&lt;br /&gt;
== LookNFeel editor for CEED ==&lt;br /&gt;
As of now, CEED edits layouts, imagesets and animations. LookNFeel editor would be a killer addition. Basically would allow artists to create new skins without touching XML code. This has always been a feature that many requested.&lt;br /&gt;
&lt;br /&gt;
difficulty: Hard&lt;br /&gt;
&lt;br /&gt;
mentors: Kulik (ack)&lt;br /&gt;
&lt;br /&gt;
== Focus implementation ==&lt;br /&gt;
There's no focus implementation so far in CEGUI, i.e., you can't have both mouse and keyboard focuses. Only one widget has focus, and gets all inputs. This complicates game development and decreases GUI flexibility.&lt;br /&gt;
More info: http://www.cegui.org.uk/mantis/print_bug_page.php?bug_id=113&lt;br /&gt;
&lt;br /&gt;
difficulty: Hard&lt;br /&gt;
&lt;br /&gt;
mentors: kornerr (ack)&lt;br /&gt;
&lt;br /&gt;
== Canvas (custom render independent drawing) + SVG subset ==&lt;br /&gt;
CEGUI only draws rectangles at this point (it binds textures to them but they are still rectangles). This task would be about adding the ability to draw other shapes to surfaces of widgets. The API should reuse concepts from other libraries.&lt;br /&gt;
It would be cool if we were able to draw a subset of SVG with this API (preferably having a subclass of Image called SVGImage). Implementing a CEGUI [http://code.google.com/p/skia Skia] renderer would help greatly with that. &lt;br /&gt;
&lt;br /&gt;
difficulty: Hard&lt;br /&gt;
&lt;br /&gt;
mentors: Jamarr, Kulik (ack)&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=GSoC_Ideas&amp;diff=4739</id>
		<title>GSoC Ideas</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=GSoC_Ideas&amp;diff=4739"/>
				<updated>2012-01-09T11:27:29Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;IMPORTANT: Nothing is final, CEGUI might or might not get into GSoC! Feel free to add ideas though! :)&lt;br /&gt;
IMPORTANT2: I have arbitrarily chosen the mentors, mentors please add (ack) if you agree with my choice. Edit yourself out otherwise. Thanks!&lt;br /&gt;
&lt;br /&gt;
== Samples framework ==&lt;br /&gt;
Currently, samples are separate applications that are run separately. It would be nice to have some sort of an unified framework for defining samples. That way you can start CEGUIDemos executable and browse through samples, switching them, etc... New samples should be coded in C++, Python or Lua (all languages CEGUI officially supports), so this framework should have bindings for Python and Lua. The GUI for choosing samples should of course be done with CEGUI.&lt;br /&gt;
&lt;br /&gt;
Ogre has a similar sample framework (but samples can only be written in C++).&lt;br /&gt;
&lt;br /&gt;
difficulty: Easy&lt;br /&gt;
&lt;br /&gt;
mentors: Jamarr, fusion44, Kulik (ack)&lt;br /&gt;
&lt;br /&gt;
== New Font API ==&lt;br /&gt;
CEGUI exposes a lot of pain regarding text rendering and realtime 3D graphics to the user. You have to explicitly instantiate the font in sizes you will want, you have to instantiate bold, italic, etc variants as separate fonts, ... This task would involve changing the API around to make it simpler for the user. You would be able to define a Font you want to use and sizes would be loaded into textures dynamically (including garbage collection).&lt;br /&gt;
&lt;br /&gt;
freetype2 and/or fonts vs OpenGL/DX experience would be very valuable for this task&lt;br /&gt;
&lt;br /&gt;
difficulty: Medium&lt;br /&gt;
&lt;br /&gt;
mentors: Jamarr, fusion44, Kulik (ack)&lt;br /&gt;
&lt;br /&gt;
== Revamp Ogre Renderer to be more high level ==&lt;br /&gt;
CEGUIOgreRenderer uses some intimate Ogre internals knowledge, we use lowlevel _ prefixed methods to draw. This is suboptimal for various reasons, the renderer is prone to Ogre changes that normally don't affect users. Render targets behave odd in OpenGL, DX10 and DX11 is somewhat supported in Ogre but CEGUI renders with various quirks with it, etc...&lt;br /&gt;
&lt;br /&gt;
The idea is to use high level Ogre constructs to render, ManualObject as GeometryBuffer, Materials instead of manually altering the state via Ogre::RenderTarget, etc... All of this has to have comparable performance to the old Ogre Renderer.&lt;br /&gt;
&lt;br /&gt;
difficulty: Medium&lt;br /&gt;
&lt;br /&gt;
mentors: Jamarr, fusion44, Kulik (ack)&lt;br /&gt;
&lt;br /&gt;
== Animation staging ==&lt;br /&gt;
Animation in CEGUI only works on a single window. It would be great if users were able to stage complex animations (think main menu appearing). The idea is to fire off multiple animations on a whole widget tree at the right times. This task also involves writing an editor in the CEGUI Unified Editor for it. The API should be rather simple and easy to do, the editor will be harder (IMO).&lt;br /&gt;
&lt;br /&gt;
difficulty: Medium&lt;br /&gt;
&lt;br /&gt;
mentors: Jamarr, fusion44, Kulik (ack)&lt;br /&gt;
&lt;br /&gt;
== LookNFeel editor for CEED ==&lt;br /&gt;
As of now, CEED edits layouts, imagesets and animations. LookNFeel editor would be a killer addition. Basically would allow artists to create new skins without touching XML code. This has always been a feature that many requested.&lt;br /&gt;
&lt;br /&gt;
difficulty: Hard&lt;br /&gt;
&lt;br /&gt;
mentors: Kulik (ack)&lt;br /&gt;
&lt;br /&gt;
== Focus implementation ==&lt;br /&gt;
There's no focus implementation so far in CEGUI, i.e., you can't have both mouse and keyboard focuses. Only one widget has focus, and gets all inputs. This complicates game development and decreases GUI flexibility.&lt;br /&gt;
More info: http://www.cegui.org.uk/mantis/print_bug_page.php?bug_id=113&lt;br /&gt;
&lt;br /&gt;
difficulty: Hard&lt;br /&gt;
&lt;br /&gt;
mentors: kornerr (ack)&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=CEED&amp;diff=4648</id>
		<title>CEED</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=CEED&amp;diff=4648"/>
				<updated>2011-09-27T12:08:43Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Upcoming CEGUI unified editor. Currently in the early stages. Includes project management and multi-file/multi-tab editing.&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
CEED depends on an yet unreleased CEGUI 0.8, so you will need to set up a special environment to run it.&lt;br /&gt;
&lt;br /&gt;
[http://www.cegui.org.uk/phpBB2/viewtopic.php?f=15&amp;amp;t=5566 Original post at the forums]&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
You need CMake, Python &amp;gt;= 2.6, PyOpenGL, PySide (+ utils/tools), Boost.Python.&lt;br /&gt;
&lt;br /&gt;
==== Debian Wheezy ====&lt;br /&gt;
&lt;br /&gt;
PySide is part of Sid at the moment, so you have to add its repository address to your /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 apt-get install cmake python-opengl pyside-tools boost-python&lt;br /&gt;
&lt;br /&gt;
=== Build CEGUI and PyCEGUI ===&lt;br /&gt;
&lt;br /&gt;
 mkdir -p cegui_mk2/build &lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/cegui_mk2 cegui_mk2/cegui&lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED&lt;br /&gt;
 cd cegui_mk2/build&lt;br /&gt;
 cmake -DCEGUI_BUILD_PYTHON_MODULES=ON ../cegui&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
 cd CEED&lt;br /&gt;
 ./runwrapper.sh&lt;br /&gt;
 python CEED.py&lt;br /&gt;
&lt;br /&gt;
You will see a window like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_main_window.png]]&lt;br /&gt;
&lt;br /&gt;
== Project ==&lt;br /&gt;
&lt;br /&gt;
Unlike old editors (CELayoutEditor and CEImagesetEditor), CEED has a notion of a project. Each project has its own combination of resources and runs its own CEGUI version to render your CEGUI resources. This allows you to have more that one scheme loaded at a time.&lt;br /&gt;
&lt;br /&gt;
To create a new project, you should go to '''File -&amp;gt; New project'''.&lt;br /&gt;
&lt;br /&gt;
The dialog appears. You should input project name and location of the &amp;quot;.project&amp;quot; file. '''Note''': parent directory of the &amp;quot;.project&amp;quot; file must exist.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project.png]]&lt;br /&gt;
&lt;br /&gt;
After you press '''OK''', Project settings window appears.&lt;br /&gt;
&lt;br /&gt;
=== Project settings ===&lt;br /&gt;
&lt;br /&gt;
(The window is also accessible from '''Edit -&amp;gt; Project settings''')&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_project_settings.png]]&lt;br /&gt;
&lt;br /&gt;
CEED can create assets for CEGUI versions: 0.6 to 0.8. 0.7 is the latest stable, so select it.&lt;br /&gt;
&lt;br /&gt;
Point &amp;quot;Resource directory&amp;quot; to the place where &amp;quot;fonts&amp;quot;, &amp;quot;schemes&amp;quot; and the rest directories are located, then press '''Apply'''. It will change the paths below.&lt;br /&gt;
&lt;br /&gt;
Press '''OK''' and will load your resources. If it fails to, it will show you a warning dialog:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project_warning.png]]&lt;br /&gt;
&lt;br /&gt;
In our case, the resource directory does not have &amp;quot;schemes&amp;quot; subdirectory, as noted on the last line. Correct the paths and retry.&lt;br /&gt;
&lt;br /&gt;
=== Project resources ===&lt;br /&gt;
&lt;br /&gt;
Currently CEED can only work with imagesets and layouts. Add them to your project by clicking with the right mouse button on '''Project manager''' and selecting '''Add existing file(s)''':&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_project_add_existing.png]]&lt;br /&gt;
&lt;br /&gt;
Select the necessary imagesets and layouts, and save the project.&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_layout.png]]&lt;br /&gt;
&lt;br /&gt;
To create a new widget, drag it from the left bottom panel.&lt;br /&gt;
&lt;br /&gt;
To edit it, you can either do it visually, or switch to &amp;quot;Code&amp;quot; tab seen below, and edit it manually. There's also &amp;quot;Preview&amp;quot; tab, where you can test your layout in real time.&lt;br /&gt;
&lt;br /&gt;
=== Imagesets ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_imageset.png]]&lt;br /&gt;
&lt;br /&gt;
To create a new image, press tool bar button second from the right, or click with the right mouse button on the image itself and select '''Create image''':&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_imageset_create_image.png]]&lt;br /&gt;
&lt;br /&gt;
It creates a 50 x 50 rectangle centered at where mouse cursor is. Move and resize it as you see fit.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
Go to '''Edit -&amp;gt; Application settings'''.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_application_settings.png]]&lt;br /&gt;
&lt;br /&gt;
There are many settings you can tweak. One of the most important might be '''Shortcuts'''. It allows you to assign shortcuts to zoom, image creation, opening a project, and so on.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Currently you may have problems with Imagesets that use TGA, since some versions of Qt may be built without TGA support. CEGUI 0.8 has all imagery as PNG (CEGUI 0.7 used TGA), and we advise you to use PNG instead of TGA.&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=File:Ceed_application_settings.png&amp;diff=4647</id>
		<title>File:Ceed application settings.png</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=File:Ceed_application_settings.png&amp;diff=4647"/>
				<updated>2011-09-27T12:06:39Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=CEED&amp;diff=4646</id>
		<title>CEED</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=CEED&amp;diff=4646"/>
				<updated>2011-09-27T12:02:23Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: /* Imagesets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Upcoming CEGUI unified editor. Currently in the early stages. Includes project management and multi-file/multi-tab editing.&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
CEED depends on an yet unreleased CEGUI 0.8, so you will need to set up a special environment to run it.&lt;br /&gt;
&lt;br /&gt;
[http://www.cegui.org.uk/phpBB2/viewtopic.php?f=15&amp;amp;t=5566 Original post at the forums]&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
You need CMake, Python &amp;gt;= 2.6, PyOpenGL, PySide (+ utils/tools), Boost.Python.&lt;br /&gt;
&lt;br /&gt;
==== Debian Wheezy ====&lt;br /&gt;
&lt;br /&gt;
PySide is part of Sid at the moment, so you have to add its repository address to your /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 apt-get install cmake python-opengl pyside-tools boost-python&lt;br /&gt;
&lt;br /&gt;
=== Build CEGUI and PyCEGUI ===&lt;br /&gt;
&lt;br /&gt;
 mkdir -p cegui_mk2/build &lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/cegui_mk2 cegui_mk2/cegui&lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED&lt;br /&gt;
 cd cegui_mk2/build&lt;br /&gt;
 cmake -DCEGUI_BUILD_PYTHON_MODULES=ON ../cegui&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
 cd CEED&lt;br /&gt;
 ./runwrapper.sh&lt;br /&gt;
 python CEED.py&lt;br /&gt;
&lt;br /&gt;
You will see a window like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_main_window.png]]&lt;br /&gt;
&lt;br /&gt;
== Project ==&lt;br /&gt;
&lt;br /&gt;
Unlike old editors (CELayoutEditor and CEImagesetEditor), CEED has a notion of a project. Each project has its own combination of resources and runs its own CEGUI version to render your CEGUI resources. This allows you to have more that one scheme loaded at a time.&lt;br /&gt;
&lt;br /&gt;
To create a new project, you should go to '''File -&amp;gt; New project'''.&lt;br /&gt;
&lt;br /&gt;
The dialog appears. You should input project name and location of the &amp;quot;.project&amp;quot; file. '''Note''': parent directory of the &amp;quot;.project&amp;quot; file must exist.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project.png]]&lt;br /&gt;
&lt;br /&gt;
After you press '''OK''', Project settings window appears.&lt;br /&gt;
&lt;br /&gt;
=== Project settings ===&lt;br /&gt;
&lt;br /&gt;
(The window is also accessible from '''Edit -&amp;gt; Project settings''')&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_project_settings.png]]&lt;br /&gt;
&lt;br /&gt;
CEED can create assets for CEGUI versions: 0.6 to 0.8. 0.7 is the latest stable, so select it.&lt;br /&gt;
&lt;br /&gt;
Point &amp;quot;Resource directory&amp;quot; to the place where &amp;quot;fonts&amp;quot;, &amp;quot;schemes&amp;quot; and the rest directories are located, then press '''Apply'''. It will change the paths below.&lt;br /&gt;
&lt;br /&gt;
Press '''OK''' and will load your resources. If it fails to, it will show you a warning dialog:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project_warning.png]]&lt;br /&gt;
&lt;br /&gt;
In our case, the resource directory does not have &amp;quot;schemes&amp;quot; subdirectory, as noted on the last line. Correct the paths and retry.&lt;br /&gt;
&lt;br /&gt;
=== Project resources ===&lt;br /&gt;
&lt;br /&gt;
Currently CEED can only work with imagesets and layouts. Add them to your project by clicking with the right mouse button on '''Project manager''' and selecting '''Add existing file(s)''':&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_project_add_existing.png]]&lt;br /&gt;
&lt;br /&gt;
Select the necessary imagesets and layouts, and save the project.&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_layout.png]]&lt;br /&gt;
&lt;br /&gt;
To create a new widget, drag it from the left bottom panel.&lt;br /&gt;
&lt;br /&gt;
To edit it, you can either do it visually, or switch to &amp;quot;Code&amp;quot; tab seen below, and edit it manually. There's also &amp;quot;Preview&amp;quot; tab, where you can test your layout in real time.&lt;br /&gt;
&lt;br /&gt;
=== Imagesets ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_imageset.png]]&lt;br /&gt;
&lt;br /&gt;
To create a new image, press tool bar button second from the right, or click with the right mouse button on the image itself and select '''Create image''':&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_imageset_create_image.png]]&lt;br /&gt;
&lt;br /&gt;
It creates a 50 x 50 rectangle centered at where mouse cursor is. Move and resize it as you see fit.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Currently you may have problems with Imagesets that use TGA, since some versions of Qt may be built without TGA support. CEGUI 0.8 has all imagery as PNG (CEGUI 0.7 used TGA), and we advise you to use PNG instead of TGA.&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=CEED&amp;diff=4645</id>
		<title>CEED</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=CEED&amp;diff=4645"/>
				<updated>2011-09-27T12:01:51Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: /* Imagesets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Upcoming CEGUI unified editor. Currently in the early stages. Includes project management and multi-file/multi-tab editing.&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
CEED depends on an yet unreleased CEGUI 0.8, so you will need to set up a special environment to run it.&lt;br /&gt;
&lt;br /&gt;
[http://www.cegui.org.uk/phpBB2/viewtopic.php?f=15&amp;amp;t=5566 Original post at the forums]&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
You need CMake, Python &amp;gt;= 2.6, PyOpenGL, PySide (+ utils/tools), Boost.Python.&lt;br /&gt;
&lt;br /&gt;
==== Debian Wheezy ====&lt;br /&gt;
&lt;br /&gt;
PySide is part of Sid at the moment, so you have to add its repository address to your /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 apt-get install cmake python-opengl pyside-tools boost-python&lt;br /&gt;
&lt;br /&gt;
=== Build CEGUI and PyCEGUI ===&lt;br /&gt;
&lt;br /&gt;
 mkdir -p cegui_mk2/build &lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/cegui_mk2 cegui_mk2/cegui&lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED&lt;br /&gt;
 cd cegui_mk2/build&lt;br /&gt;
 cmake -DCEGUI_BUILD_PYTHON_MODULES=ON ../cegui&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
 cd CEED&lt;br /&gt;
 ./runwrapper.sh&lt;br /&gt;
 python CEED.py&lt;br /&gt;
&lt;br /&gt;
You will see a window like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_main_window.png]]&lt;br /&gt;
&lt;br /&gt;
== Project ==&lt;br /&gt;
&lt;br /&gt;
Unlike old editors (CELayoutEditor and CEImagesetEditor), CEED has a notion of a project. Each project has its own combination of resources and runs its own CEGUI version to render your CEGUI resources. This allows you to have more that one scheme loaded at a time.&lt;br /&gt;
&lt;br /&gt;
To create a new project, you should go to '''File -&amp;gt; New project'''.&lt;br /&gt;
&lt;br /&gt;
The dialog appears. You should input project name and location of the &amp;quot;.project&amp;quot; file. '''Note''': parent directory of the &amp;quot;.project&amp;quot; file must exist.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project.png]]&lt;br /&gt;
&lt;br /&gt;
After you press '''OK''', Project settings window appears.&lt;br /&gt;
&lt;br /&gt;
=== Project settings ===&lt;br /&gt;
&lt;br /&gt;
(The window is also accessible from '''Edit -&amp;gt; Project settings''')&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_project_settings.png]]&lt;br /&gt;
&lt;br /&gt;
CEED can create assets for CEGUI versions: 0.6 to 0.8. 0.7 is the latest stable, so select it.&lt;br /&gt;
&lt;br /&gt;
Point &amp;quot;Resource directory&amp;quot; to the place where &amp;quot;fonts&amp;quot;, &amp;quot;schemes&amp;quot; and the rest directories are located, then press '''Apply'''. It will change the paths below.&lt;br /&gt;
&lt;br /&gt;
Press '''OK''' and will load your resources. If it fails to, it will show you a warning dialog:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project_warning.png]]&lt;br /&gt;
&lt;br /&gt;
In our case, the resource directory does not have &amp;quot;schemes&amp;quot; subdirectory, as noted on the last line. Correct the paths and retry.&lt;br /&gt;
&lt;br /&gt;
=== Project resources ===&lt;br /&gt;
&lt;br /&gt;
Currently CEED can only work with imagesets and layouts. Add them to your project by clicking with the right mouse button on '''Project manager''' and selecting '''Add existing file(s)''':&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_project_add_existing.png]]&lt;br /&gt;
&lt;br /&gt;
Select the necessary imagesets and layouts, and save the project.&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_layout.png]]&lt;br /&gt;
&lt;br /&gt;
To create a new widget, drag it from the left bottom panel.&lt;br /&gt;
&lt;br /&gt;
To edit it, you can either do it visually, or switch to &amp;quot;Code&amp;quot; tab seen below, and edit it manually. There's also &amp;quot;Preview&amp;quot; tab, where you can test your layout in real time.&lt;br /&gt;
&lt;br /&gt;
== Imagesets ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_imageset.png]]&lt;br /&gt;
&lt;br /&gt;
To create a new image, press tool bar button second from the right, or click with the right mouse button on the image itself and select '''Create image''':&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_imageset_create_image.png]]&lt;br /&gt;
&lt;br /&gt;
It creates a 50 x 50 rectangle centered at where mouse cursor is. Move and resize it as you see fit.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Currently you may have problems with Imagesets that use TGA, since some versions of Qt may be built without TGA support. CEGUI 0.8 has all imagery as PNG (CEGUI 0.7 used TGA), and we advise you to use PNG instead of TGA.&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=CEED&amp;diff=4644</id>
		<title>CEED</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=CEED&amp;diff=4644"/>
				<updated>2011-09-27T11:59:47Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: /* Layouts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Upcoming CEGUI unified editor. Currently in the early stages. Includes project management and multi-file/multi-tab editing.&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
CEED depends on an yet unreleased CEGUI 0.8, so you will need to set up a special environment to run it.&lt;br /&gt;
&lt;br /&gt;
[http://www.cegui.org.uk/phpBB2/viewtopic.php?f=15&amp;amp;t=5566 Original post at the forums]&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
You need CMake, Python &amp;gt;= 2.6, PyOpenGL, PySide (+ utils/tools), Boost.Python.&lt;br /&gt;
&lt;br /&gt;
==== Debian Wheezy ====&lt;br /&gt;
&lt;br /&gt;
PySide is part of Sid at the moment, so you have to add its repository address to your /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 apt-get install cmake python-opengl pyside-tools boost-python&lt;br /&gt;
&lt;br /&gt;
=== Build CEGUI and PyCEGUI ===&lt;br /&gt;
&lt;br /&gt;
 mkdir -p cegui_mk2/build &lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/cegui_mk2 cegui_mk2/cegui&lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED&lt;br /&gt;
 cd cegui_mk2/build&lt;br /&gt;
 cmake -DCEGUI_BUILD_PYTHON_MODULES=ON ../cegui&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
 cd CEED&lt;br /&gt;
 ./runwrapper.sh&lt;br /&gt;
 python CEED.py&lt;br /&gt;
&lt;br /&gt;
You will see a window like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_main_window.png]]&lt;br /&gt;
&lt;br /&gt;
== Project ==&lt;br /&gt;
&lt;br /&gt;
Unlike old editors (CELayoutEditor and CEImagesetEditor), CEED has a notion of a project. Each project has its own combination of resources and runs its own CEGUI version to render your CEGUI resources. This allows you to have more that one scheme loaded at a time.&lt;br /&gt;
&lt;br /&gt;
To create a new project, you should go to '''File -&amp;gt; New project'''.&lt;br /&gt;
&lt;br /&gt;
The dialog appears. You should input project name and location of the &amp;quot;.project&amp;quot; file. '''Note''': parent directory of the &amp;quot;.project&amp;quot; file must exist.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project.png]]&lt;br /&gt;
&lt;br /&gt;
After you press '''OK''', Project settings window appears.&lt;br /&gt;
&lt;br /&gt;
=== Project settings ===&lt;br /&gt;
&lt;br /&gt;
(The window is also accessible from '''Edit -&amp;gt; Project settings''')&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_project_settings.png]]&lt;br /&gt;
&lt;br /&gt;
CEED can create assets for CEGUI versions: 0.6 to 0.8. 0.7 is the latest stable, so select it.&lt;br /&gt;
&lt;br /&gt;
Point &amp;quot;Resource directory&amp;quot; to the place where &amp;quot;fonts&amp;quot;, &amp;quot;schemes&amp;quot; and the rest directories are located, then press '''Apply'''. It will change the paths below.&lt;br /&gt;
&lt;br /&gt;
Press '''OK''' and will load your resources. If it fails to, it will show you a warning dialog:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project_warning.png]]&lt;br /&gt;
&lt;br /&gt;
In our case, the resource directory does not have &amp;quot;schemes&amp;quot; subdirectory, as noted on the last line. Correct the paths and retry.&lt;br /&gt;
&lt;br /&gt;
=== Project resources ===&lt;br /&gt;
&lt;br /&gt;
Currently CEED can only work with imagesets and layouts. Add them to your project by clicking with the right mouse button on '''Project manager''' and selecting '''Add existing file(s)''':&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_project_add_existing.png]]&lt;br /&gt;
&lt;br /&gt;
Select the necessary imagesets and layouts, and save the project.&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_layout.png]]&lt;br /&gt;
&lt;br /&gt;
To create a new widget, drag it from the left bottom panel.&lt;br /&gt;
&lt;br /&gt;
To edit it, you can either do it visually, or switch to &amp;quot;Code&amp;quot; tab seen below, and edit it manually. There's also &amp;quot;Preview&amp;quot; tab, where you can test your layout in real time.&lt;br /&gt;
&lt;br /&gt;
== Imagesets ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_imageset.png]]&lt;br /&gt;
&lt;br /&gt;
To create a new image, press second from the left button on the tool bar, or click with the right mouse button on the image itself and select &amp;quot;Create image&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_imageset_create_image.png]]&lt;br /&gt;
&lt;br /&gt;
It creates a 50 x 50 rectangle centered at where mouse cursor is. Adjust it.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Currently you may have problems with Imagesets that use TGA, since some versions of Qt may be built without TGA support. CEGUI 0.8 has all imagery as PNG (CEGUI 0.7 used TGA), and we advise you to use PNG instead of TGA.&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=File:Ceed_imageset_create_image.png&amp;diff=4643</id>
		<title>File:Ceed imageset create image.png</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=File:Ceed_imageset_create_image.png&amp;diff=4643"/>
				<updated>2011-09-27T11:57:37Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=File:Ceed_imageset.png&amp;diff=4642</id>
		<title>File:Ceed imageset.png</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=File:Ceed_imageset.png&amp;diff=4642"/>
				<updated>2011-09-27T11:53:41Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=CEED&amp;diff=4641</id>
		<title>CEED</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=CEED&amp;diff=4641"/>
				<updated>2011-09-26T15:16:54Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: /* Project resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Upcoming CEGUI unified editor. Currently in the early stages. Includes project management and multi-file/multi-tab editing.&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
CEED depends on an yet unreleased CEGUI 0.8, so you will need to set up a special environment to run it.&lt;br /&gt;
&lt;br /&gt;
[http://www.cegui.org.uk/phpBB2/viewtopic.php?f=15&amp;amp;t=5566 Original post at the forums]&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
You need CMake, Python &amp;gt;= 2.6, PyOpenGL, PySide (+ utils/tools), Boost.Python.&lt;br /&gt;
&lt;br /&gt;
==== Debian Wheezy ====&lt;br /&gt;
&lt;br /&gt;
PySide is part of Sid at the moment, so you have to add its repository address to your /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 apt-get install cmake python-opengl pyside-tools boost-python&lt;br /&gt;
&lt;br /&gt;
=== Build CEGUI and PyCEGUI ===&lt;br /&gt;
&lt;br /&gt;
 mkdir -p cegui_mk2/build &lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/cegui_mk2 cegui_mk2/cegui&lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED&lt;br /&gt;
 cd cegui_mk2/build&lt;br /&gt;
 cmake -DCEGUI_BUILD_PYTHON_MODULES=ON ../cegui&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
 cd CEED&lt;br /&gt;
 ./runwrapper.sh&lt;br /&gt;
 python CEED.py&lt;br /&gt;
&lt;br /&gt;
You will see a window like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_main_window.png]]&lt;br /&gt;
&lt;br /&gt;
== Project ==&lt;br /&gt;
&lt;br /&gt;
Unlike old editors (CELayoutEditor and CEImagesetEditor), CEED has a notion of a project. Each project has its own combination of resources and runs its own CEGUI version to render your CEGUI resources. This allows you to have more that one scheme loaded at a time.&lt;br /&gt;
&lt;br /&gt;
To create a new project, you should go to '''File -&amp;gt; New project'''.&lt;br /&gt;
&lt;br /&gt;
The dialog appears. You should input project name and location of the &amp;quot;.project&amp;quot; file. '''Note''': parent directory of the &amp;quot;.project&amp;quot; file must exist.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project.png]]&lt;br /&gt;
&lt;br /&gt;
After you press '''OK''', Project settings window appears.&lt;br /&gt;
&lt;br /&gt;
=== Project settings ===&lt;br /&gt;
&lt;br /&gt;
(The window is also accessible from '''Edit -&amp;gt; Project settings''')&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_project_settings.png]]&lt;br /&gt;
&lt;br /&gt;
CEED can create assets for CEGUI versions: 0.6 to 0.8. 0.7 is the latest stable, so select it.&lt;br /&gt;
&lt;br /&gt;
Point &amp;quot;Resource directory&amp;quot; to the place where &amp;quot;fonts&amp;quot;, &amp;quot;schemes&amp;quot; and the rest directories are located, then press '''Apply'''. It will change the paths below.&lt;br /&gt;
&lt;br /&gt;
Press '''OK''' and will load your resources. If it fails to, it will show you a warning dialog:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project_warning.png]]&lt;br /&gt;
&lt;br /&gt;
In our case, the resource directory does not have &amp;quot;schemes&amp;quot; subdirectory, as noted on the last line. Correct the paths and retry.&lt;br /&gt;
&lt;br /&gt;
=== Project resources ===&lt;br /&gt;
&lt;br /&gt;
Currently CEED can only work with imagesets and layouts. Add them to your project by clicking with the right mouse button on '''Project manager''' and selecting '''Add existing file(s)''':&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_project_add_existing.png]]&lt;br /&gt;
&lt;br /&gt;
Select the necessary imagesets and layouts, and save the project.&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_layout.png]]&lt;br /&gt;
&lt;br /&gt;
CONTINUE HERE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Currently you may have problems with Imagesets that use TGA, since some versions of Qt may be built without TGA support. CEGUI 0.8 has all imagery as PNG (CEGUI 0.7 used TGA), and we advise you to use PNG instead of TGA.&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=CEED&amp;diff=4640</id>
		<title>CEED</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=CEED&amp;diff=4640"/>
				<updated>2011-09-26T15:14:55Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: /* Project settings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Upcoming CEGUI unified editor. Currently in the early stages. Includes project management and multi-file/multi-tab editing.&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
CEED depends on an yet unreleased CEGUI 0.8, so you will need to set up a special environment to run it.&lt;br /&gt;
&lt;br /&gt;
[http://www.cegui.org.uk/phpBB2/viewtopic.php?f=15&amp;amp;t=5566 Original post at the forums]&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
You need CMake, Python &amp;gt;= 2.6, PyOpenGL, PySide (+ utils/tools), Boost.Python.&lt;br /&gt;
&lt;br /&gt;
==== Debian Wheezy ====&lt;br /&gt;
&lt;br /&gt;
PySide is part of Sid at the moment, so you have to add its repository address to your /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 apt-get install cmake python-opengl pyside-tools boost-python&lt;br /&gt;
&lt;br /&gt;
=== Build CEGUI and PyCEGUI ===&lt;br /&gt;
&lt;br /&gt;
 mkdir -p cegui_mk2/build &lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/cegui_mk2 cegui_mk2/cegui&lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED&lt;br /&gt;
 cd cegui_mk2/build&lt;br /&gt;
 cmake -DCEGUI_BUILD_PYTHON_MODULES=ON ../cegui&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
 cd CEED&lt;br /&gt;
 ./runwrapper.sh&lt;br /&gt;
 python CEED.py&lt;br /&gt;
&lt;br /&gt;
You will see a window like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_main_window.png]]&lt;br /&gt;
&lt;br /&gt;
== Project ==&lt;br /&gt;
&lt;br /&gt;
Unlike old editors (CELayoutEditor and CEImagesetEditor), CEED has a notion of a project. Each project has its own combination of resources and runs its own CEGUI version to render your CEGUI resources. This allows you to have more that one scheme loaded at a time.&lt;br /&gt;
&lt;br /&gt;
To create a new project, you should go to '''File -&amp;gt; New project'''.&lt;br /&gt;
&lt;br /&gt;
The dialog appears. You should input project name and location of the &amp;quot;.project&amp;quot; file. '''Note''': parent directory of the &amp;quot;.project&amp;quot; file must exist.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project.png]]&lt;br /&gt;
&lt;br /&gt;
After you press '''OK''', Project settings window appears.&lt;br /&gt;
&lt;br /&gt;
=== Project settings ===&lt;br /&gt;
&lt;br /&gt;
(The window is also accessible from '''Edit -&amp;gt; Project settings''')&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_project_settings.png]]&lt;br /&gt;
&lt;br /&gt;
CEED can create assets for CEGUI versions: 0.6 to 0.8. 0.7 is the latest stable, so select it.&lt;br /&gt;
&lt;br /&gt;
Point &amp;quot;Resource directory&amp;quot; to the place where &amp;quot;fonts&amp;quot;, &amp;quot;schemes&amp;quot; and the rest directories are located, then press '''Apply'''. It will change the paths below.&lt;br /&gt;
&lt;br /&gt;
Press '''OK''' and will load your resources. If it fails to, it will show you a warning dialog:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project_warning.png]]&lt;br /&gt;
&lt;br /&gt;
In our case, the resource directory does not have &amp;quot;schemes&amp;quot; subdirectory, as noted on the last line. Correct the paths and retry.&lt;br /&gt;
&lt;br /&gt;
=== Project resources ===&lt;br /&gt;
&lt;br /&gt;
Currently CEED can only work with imagesets and layouts. Add them to your project by clicking with the right mouse button on '''Project manager''' and selecting '''Add existing file(s)''':&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_project_add_existing.png]]&lt;br /&gt;
&lt;br /&gt;
Select the necessary imagesets and layouts.&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_layout.png]]&lt;br /&gt;
&lt;br /&gt;
CONTINUE HERE&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Currently you may have problems with Imagesets that use TGA, since some versions of Qt may be built without TGA support. CEGUI 0.8 has all imagery as PNG (CEGUI 0.7 used TGA), and we advise you to use PNG instead of TGA.&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=File:Ceed_layout.png&amp;diff=4639</id>
		<title>File:Ceed layout.png</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=File:Ceed_layout.png&amp;diff=4639"/>
				<updated>2011-09-26T15:14:18Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=File:Ceed_project_add_existing.png&amp;diff=4638</id>
		<title>File:Ceed project add existing.png</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=File:Ceed_project_add_existing.png&amp;diff=4638"/>
				<updated>2011-09-26T15:03:26Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=CEED&amp;diff=4637</id>
		<title>CEED</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=CEED&amp;diff=4637"/>
				<updated>2011-09-26T14:51:34Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Upcoming CEGUI unified editor. Currently in the early stages. Includes project management and multi-file/multi-tab editing.&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
CEED depends on an yet unreleased CEGUI 0.8, so you will need to set up a special environment to run it.&lt;br /&gt;
&lt;br /&gt;
[http://www.cegui.org.uk/phpBB2/viewtopic.php?f=15&amp;amp;t=5566 Original post at the forums]&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
You need CMake, Python &amp;gt;= 2.6, PyOpenGL, PySide (+ utils/tools), Boost.Python.&lt;br /&gt;
&lt;br /&gt;
==== Debian Wheezy ====&lt;br /&gt;
&lt;br /&gt;
PySide is part of Sid at the moment, so you have to add its repository address to your /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 apt-get install cmake python-opengl pyside-tools boost-python&lt;br /&gt;
&lt;br /&gt;
=== Build CEGUI and PyCEGUI ===&lt;br /&gt;
&lt;br /&gt;
 mkdir -p cegui_mk2/build &lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/cegui_mk2 cegui_mk2/cegui&lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED&lt;br /&gt;
 cd cegui_mk2/build&lt;br /&gt;
 cmake -DCEGUI_BUILD_PYTHON_MODULES=ON ../cegui&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
 cd CEED&lt;br /&gt;
 ./runwrapper.sh&lt;br /&gt;
 python CEED.py&lt;br /&gt;
&lt;br /&gt;
You will see a window like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_main_window.png]]&lt;br /&gt;
&lt;br /&gt;
== Project ==&lt;br /&gt;
&lt;br /&gt;
Unlike old editors (CELayoutEditor and CEImagesetEditor), CEED has a notion of a project. Each project has its own combination of resources and runs its own CEGUI version to render your CEGUI resources. This allows you to have more that one scheme loaded at a time.&lt;br /&gt;
&lt;br /&gt;
To create a new project, you should go to '''File -&amp;gt; New project'''.&lt;br /&gt;
&lt;br /&gt;
The dialog appears. You should input project name and location of the &amp;quot;.project&amp;quot; file. '''Note''': parent directory of the &amp;quot;.project&amp;quot; file must exist.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project.png]]&lt;br /&gt;
&lt;br /&gt;
After you press '''OK''', Project settings window appears.&lt;br /&gt;
&lt;br /&gt;
=== Project settings ===&lt;br /&gt;
&lt;br /&gt;
(The window is also accessible from '''Edit -&amp;gt; Project settings''')&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_project_settings.png]]&lt;br /&gt;
&lt;br /&gt;
CEED can create assets for CEGUI versions: 0.6 to 0.8. 0.7 is the latest stable, so select it.&lt;br /&gt;
&lt;br /&gt;
Point &amp;quot;Resource directory&amp;quot; to the place where &amp;quot;fonts&amp;quot;, &amp;quot;schemes&amp;quot; and the rest directories are located, then press '''Apply'''. It will change the paths below.&lt;br /&gt;
&lt;br /&gt;
Press '''OK''' and will load your resources. If it fails to, it will show you a warning dialog:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project_warning.png]]&lt;br /&gt;
&lt;br /&gt;
In our case, the resource directory does not have &amp;quot;schemes&amp;quot; subdirectory, as noted on the last line. Correct the paths and retry.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Currently you may have problems with Imagesets that use TGA, since some versions of Qt may be built without TGA support. CEGUI 0.8 has all imagery as PNG (CEGUI 0.7 used TGA), and we advise you to use PNG instead of TGA.&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=CEED&amp;diff=4636</id>
		<title>CEED</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=CEED&amp;diff=4636"/>
				<updated>2011-09-26T14:20:07Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: /* Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Upcoming CEGUI unified editor. Currently in the early stages. Includes project management and multi-file/multi-tab editing.&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
CEED depends on an yet unreleased CEGUI 0.8, so you will need to set up a special environment to run it.&lt;br /&gt;
&lt;br /&gt;
[http://www.cegui.org.uk/phpBB2/viewtopic.php?f=15&amp;amp;t=5566 Original post at the forums]&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
You need CMake, Python &amp;gt;= 2.6, PyOpenGL, PySide (+ utils/tools), Boost.Python.&lt;br /&gt;
&lt;br /&gt;
==== Debian Wheezy ====&lt;br /&gt;
&lt;br /&gt;
PySide is part of Sid at the moment, so you have to add its repository address to your /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 apt-get install cmake python-opengl pyside-tools boost-python&lt;br /&gt;
&lt;br /&gt;
=== Build CEGUI and PyCEGUI ===&lt;br /&gt;
&lt;br /&gt;
 mkdir -p cegui_mk2/build &lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/cegui_mk2 cegui_mk2/cegui&lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED&lt;br /&gt;
 cd cegui_mk2/build&lt;br /&gt;
 cmake -DCEGUI_BUILD_PYTHON_MODULES=ON ../cegui&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
 cd CEED&lt;br /&gt;
 ./runwrapper.sh&lt;br /&gt;
 python CEED.py&lt;br /&gt;
&lt;br /&gt;
You will see a window like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_main_window.png]]&lt;br /&gt;
&lt;br /&gt;
== Project ==&lt;br /&gt;
&lt;br /&gt;
Unlike old editors (CELayoutEditor and CEImagesetEditor), CEED has a notion of a project. Each project has its own combination of resources and runs its own CEGUI version to render your CEGUI resources. This allows you to have more that one scheme loaded at a time.&lt;br /&gt;
&lt;br /&gt;
To create a new project, you should go to '''File -&amp;gt; New project'''.&lt;br /&gt;
&lt;br /&gt;
The dialog appears. You should input project name and location of the &amp;quot;.project&amp;quot; file. '''Note''': parent directory of the &amp;quot;.project&amp;quot; file must exist.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project.png]]&lt;br /&gt;
&lt;br /&gt;
After you press '''OK''', a warning appears:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project_warning.png]]&lt;br /&gt;
&lt;br /&gt;
When you press '''OK''', CEED sets up the paths to usual CEGUI resource directories. It suggests that the directory with &amp;quot;.project&amp;quot; file contains &amp;quot;animations&amp;quot;, &amp;quot;fonts&amp;quot;, and other CEGUI directories. If you got the above warning, your directory does not contain the necessary &amp;quot;scheme&amp;quot; directory. We will specify correct paths later.&lt;br /&gt;
&lt;br /&gt;
== Project settings ==&lt;br /&gt;
&lt;br /&gt;
Go to Edit -&amp;gt; Project settings.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_project_settings.png]]&lt;br /&gt;
&lt;br /&gt;
CEED can create assets for CEGUI versions: 0.6 to 0.8. 0.7 is the latest stable, so select it.&lt;br /&gt;
&lt;br /&gt;
Point &amp;quot;Resource directory&amp;quot; to the place where &amp;quot;fonts&amp;quot;, &amp;quot;scheme&amp;quot; and the rest directories are located, then press &amp;quot;Apply&amp;quot;. It will change the paths below.&lt;br /&gt;
&lt;br /&gt;
Press OK and it might load your resources. It failed for me [CONTINUE HERE]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Currently you may have problems with Imagesets that use TGA, since some versions of Qt may be built without TGA support. CEGUI 0.8 has all imagery as PNG (CEGUI 0.7 used TGA), and we advise you to use PNG instead of TGA.&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=CEED&amp;diff=4635</id>
		<title>CEED</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=CEED&amp;diff=4635"/>
				<updated>2011-09-26T14:15:36Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: /* Dependencies */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Upcoming CEGUI unified editor. Currently in the early stages. Includes project management and multi-file/multi-tab editing.&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
CEED depends on an yet unreleased CEGUI 0.8, so you will need to set up a special environment to run it.&lt;br /&gt;
&lt;br /&gt;
[http://www.cegui.org.uk/phpBB2/viewtopic.php?f=15&amp;amp;t=5566 Original post at the forums]&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
You need CMake, Python &amp;gt;= 2.6, PyOpenGL, PySide (+ utils/tools), Boost.Python.&lt;br /&gt;
&lt;br /&gt;
==== Debian Wheezy ====&lt;br /&gt;
&lt;br /&gt;
PySide is part of Sid at the moment, so you have to add its repository address to your /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 apt-get install cmake python-opengl pyside-tools boost-python&lt;br /&gt;
&lt;br /&gt;
=== Build CEGUI and PyCEGUI ===&lt;br /&gt;
&lt;br /&gt;
 mkdir -p cegui_mk2/build &lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/cegui_mk2 cegui_mk2/cegui&lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED&lt;br /&gt;
 cd cegui_mk2/build&lt;br /&gt;
 cmake -DCEGUI_BUILD_PYTHON_MODULES=ON ../cegui&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
 cd CEED&lt;br /&gt;
 ./runwrapper.sh&lt;br /&gt;
 python CEED.py&lt;br /&gt;
&lt;br /&gt;
You will see a window like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_main_window.png]]&lt;br /&gt;
&lt;br /&gt;
== Project ==&lt;br /&gt;
&lt;br /&gt;
Unlike old editors (CELayoutEditor and CEImagesetEditor), CEED has a notion of a project. Each project has its own combination of resources and runs its own CEGUI version to render your CEGUI resources. This allows you to have more that one scheme loaded at a time.&lt;br /&gt;
&lt;br /&gt;
To create a new project, you should go to File -&amp;gt; New project.&lt;br /&gt;
&lt;br /&gt;
The dialog appears. You should input project name and location of the &amp;quot;.project&amp;quot; file. '''Note''': parent directory of the &amp;quot;.project&amp;quot; file must exist.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project.png]]&lt;br /&gt;
&lt;br /&gt;
After you press OK, a warning appears:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project_warning.png]]&lt;br /&gt;
&lt;br /&gt;
When you press OK, CEED sets up the paths to usual CEGUI resource directories. It suggests that the directory with &amp;quot;.project&amp;quot; file contains &amp;quot;animations&amp;quot;, &amp;quot;fonts&amp;quot;, and other CEGUI directories. If you got the above warning, your directory does not contain the necessary &amp;quot;scheme&amp;quot; directory. We will specify correct paths later.&lt;br /&gt;
&lt;br /&gt;
== Project settings ==&lt;br /&gt;
&lt;br /&gt;
Go to Edit -&amp;gt; Project settings.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_project_settings.png]]&lt;br /&gt;
&lt;br /&gt;
CEED can create assets for CEGUI versions: 0.6 to 0.8. 0.7 is the latest stable, so select it.&lt;br /&gt;
&lt;br /&gt;
Point &amp;quot;Resource directory&amp;quot; to the place where &amp;quot;fonts&amp;quot;, &amp;quot;scheme&amp;quot; and the rest directories are located, then press &amp;quot;Apply&amp;quot;. It will change the paths below.&lt;br /&gt;
&lt;br /&gt;
Press OK and it might load your resources. It failed for me [CONTINUE HERE]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Currently you may have problems with Imagesets that use TGA, since some versions of Qt may be built without TGA support. CEGUI 0.8 has all imagery as PNG (CEGUI 0.7 used TGA), and we advise you to use PNG instead of TGA.&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Contribution&amp;diff=4634</id>
		<title>Contribution</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Contribution&amp;diff=4634"/>
				<updated>2011-09-26T14:11:45Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The article describes how you can contribute to a CEGUI project with the help of [http://bitbucket.org BitBucket].&lt;br /&gt;
&lt;br /&gt;
We prefer your contribution through BitBucket, because it simplifies the development process for both you and us. If your contribution needs a bit more tuning, we just say so and you make another commit to your BitBucket repository. After we are satisfied with the quality of the fixes, we simply pull them from you repository. And since your repository is located under your nickname, we will know you can be trusted. So it's a win-win for everybody.&lt;br /&gt;
&lt;br /&gt;
If you prefer video tutorials, you can [http://www.youtube.com/watch?v=ZjFOvLGnAiU watch this tutorial].&lt;br /&gt;
&lt;br /&gt;
'''Note''': This tutorial describes contribution to [[CEED]] (CEGUI Editor) as a user '''kornerr''' as an example.&lt;br /&gt;
&lt;br /&gt;
== Import CEED repository to BitBucket ==&lt;br /&gt;
&lt;br /&gt;
Go to [https://bitbucket.org/repo/import Repositories -&amp;gt; import repository].&lt;br /&gt;
&lt;br /&gt;
Input the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Source&lt;br /&gt;
| Mercurial repository&lt;br /&gt;
|-&lt;br /&gt;
| URL&lt;br /&gt;
| http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED&lt;br /&gt;
|-&lt;br /&gt;
| Requires authorization&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| Name&lt;br /&gt;
| CEED&lt;br /&gt;
|-&lt;br /&gt;
| Private&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| Language&lt;br /&gt;
| Python (CEGUI itself is C++)&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| CEED contribution&lt;br /&gt;
|-&lt;br /&gt;
| Website&lt;br /&gt;
| Leave blank&lt;br /&gt;
|-&lt;br /&gt;
| Wiki&lt;br /&gt;
| Leave blank&lt;br /&gt;
|-&lt;br /&gt;
| Issue tracking&lt;br /&gt;
| Leave blank&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Press '''Import'''.&lt;br /&gt;
&lt;br /&gt;
BitBucket will import the repository:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_contrib_import_repo.png]]&lt;br /&gt;
&lt;br /&gt;
Wait a bit, and you're done:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed contrib import repo done.png]]&lt;br /&gt;
&lt;br /&gt;
== Clone from BitBucket to your machine ==&lt;br /&gt;
 cd ~&lt;br /&gt;
 hg clone https://bitbucket.org/kornerr/ceed&lt;br /&gt;
&lt;br /&gt;
This will clone CEED repository from BitBucket to your home directory.&lt;br /&gt;
&lt;br /&gt;
== Make changes, commit, and push ==&lt;br /&gt;
&lt;br /&gt;
Make changes. Mine were:&lt;br /&gt;
 diff --git a/compatibility/looknfeel/cegui.py b/compatibility/looknfeel/cegui.py&lt;br /&gt;
 --- a/compatibility/looknfeel/cegui.py&lt;br /&gt;
 +++ b/compatibility/looknfeel/cegui.py&lt;br /&gt;
 @@ -95,6 +95,9 @@&lt;br /&gt;
          log = &amp;quot;&amp;quot;&lt;br /&gt;
          &lt;br /&gt;
          root = ElementTree.fromstring(data)&lt;br /&gt;
 +        # Fix for Python &amp;lt; 2.7.&lt;br /&gt;
 +        if not hasattr(root, &amp;quot;iter&amp;quot;):&lt;br /&gt;
 +            root.iter = root.getiterator&lt;br /&gt;
          &lt;br /&gt;
          # version 7 has a version attribute&lt;br /&gt;
          root.set(&amp;quot;version&amp;quot;, &amp;quot;7&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Commit with a meaningful message, e.g., in my case it was:&lt;br /&gt;
 hg commit -m &amp;quot;XML iterator fix for Python &amp;lt; 2.7. tested on Python 2.6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And push it back to BitBucket:&lt;br /&gt;
 kornerr@koren:~/ceed$ '''hg push'''&lt;br /&gt;
 pushing to https://bitbucket.org/kornerr/ceed&lt;br /&gt;
 searching for changes&lt;br /&gt;
 http authorization equired&lt;br /&gt;
 realm: Bitbucket.org HTTP&lt;br /&gt;
 user: '''kornerr'''&lt;br /&gt;
 password: &lt;br /&gt;
 remote: adding changesets&lt;br /&gt;
 remote: adding manifests&lt;br /&gt;
 remote: adding file changes&lt;br /&gt;
 remote: added 1 changesets with 1 changes to 1 files&lt;br /&gt;
 remote: bb/acl: kornerr is allowed. accepted payload.&lt;br /&gt;
&lt;br /&gt;
You can see your changes at BitBucket now:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_contrib_push.png]]&lt;br /&gt;
&lt;br /&gt;
'''Note: Please, don't try to merge many fixes into single commit. Place each fix into its own commit. It will be easier for us to understand your fixes and accept it faster.'''&lt;br /&gt;
&lt;br /&gt;
== Contact CEGUI developer(s) ==&lt;br /&gt;
Use IRC, mail, or mantis. Tell the URL of your repository and list the changesets you want into upstream.&lt;br /&gt;
&lt;br /&gt;
== Further contributions ==&lt;br /&gt;
If you will contribute again later, you need to first update your BitBucket repository to upstream version, and only then make changes. Please, do it, otherwise your fixes may be rejected simply because we can't spend hours in figuring out how to apply your old changes to the latest version.&lt;br /&gt;
&lt;br /&gt;
To update your BitBucket repository to upstream version, go to your clone of BitBucket repository on your machine and do:&lt;br /&gt;
 hg pull -u http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED&lt;br /&gt;
&lt;br /&gt;
Then simply push the changes back to your BitBucket repository:&lt;br /&gt;
 hg push&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Contribution&amp;diff=4633</id>
		<title>Contribution</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Contribution&amp;diff=4633"/>
				<updated>2011-09-26T12:57:19Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: /* 3. Make changes, commit, and push */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The article describes how you can contribute to a CEGUI project with the help of [http://bitbucket.org BitBucket].&lt;br /&gt;
&lt;br /&gt;
We prefer your contribution through BitBucket, because it simplifies the development process for both you and us. If your contribution needs a bit more tuning, we just say so and you make another commit to your BitBucket repository. After we are satisfied with the quality of the fixes, we simply pull them from you repository. And since your repository is located under your nickname, we will know you can be trusted. So it's a win-win for everybody.&lt;br /&gt;
&lt;br /&gt;
If you prefer video tutorials, you can [http://www.youtube.com/watch?v=ZjFOvLGnAiU watch this tutorial].&lt;br /&gt;
&lt;br /&gt;
'''Note''': This tutorial describes contribution to [[CEED]] (CEGUI Editor) as a user '''kornerr''' as an example.&lt;br /&gt;
&lt;br /&gt;
== 1. Import CEED repository to BitBucket ==&lt;br /&gt;
&lt;br /&gt;
Go to [https://bitbucket.org/repo/import Repositories -&amp;gt; import repository].&lt;br /&gt;
&lt;br /&gt;
Input the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Source&lt;br /&gt;
| Mercurial repository&lt;br /&gt;
|-&lt;br /&gt;
| URL&lt;br /&gt;
| http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED&lt;br /&gt;
|-&lt;br /&gt;
| Requires authorization&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| Name&lt;br /&gt;
| CEED&lt;br /&gt;
|-&lt;br /&gt;
| Private&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| Language&lt;br /&gt;
| Python (CEGUI itself is C++)&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| CEED contribution&lt;br /&gt;
|-&lt;br /&gt;
| Website&lt;br /&gt;
| Leave blank&lt;br /&gt;
|-&lt;br /&gt;
| Wiki&lt;br /&gt;
| Leave blank&lt;br /&gt;
|-&lt;br /&gt;
| Issue tracking&lt;br /&gt;
| Leave blank&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Press '''Import'''.&lt;br /&gt;
&lt;br /&gt;
BitBucket will import the repository:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_contrib_import_repo.png]]&lt;br /&gt;
&lt;br /&gt;
Wait a bit, and you're done:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed contrib import repo done.png]]&lt;br /&gt;
&lt;br /&gt;
== 2. Clone from BitBucket to your machine ==&lt;br /&gt;
 cd ~&lt;br /&gt;
 hg clone https://bitbucket.org/kornerr/ceed&lt;br /&gt;
&lt;br /&gt;
This will clone CEED repository from BitBucket to your home directory.&lt;br /&gt;
&lt;br /&gt;
== 3. Make changes, commit, and push ==&lt;br /&gt;
&lt;br /&gt;
Make changes. Mine were:&lt;br /&gt;
 diff --git a/compatibility/looknfeel/cegui.py b/compatibility/looknfeel/cegui.py&lt;br /&gt;
 --- a/compatibility/looknfeel/cegui.py&lt;br /&gt;
 +++ b/compatibility/looknfeel/cegui.py&lt;br /&gt;
 @@ -95,6 +95,9 @@&lt;br /&gt;
          log = &amp;quot;&amp;quot;&lt;br /&gt;
          &lt;br /&gt;
          root = ElementTree.fromstring(data)&lt;br /&gt;
 +        # Fix for Python &amp;lt; 2.7.&lt;br /&gt;
 +        if not hasattr(root, &amp;quot;iter&amp;quot;):&lt;br /&gt;
 +            root.iter = root.getiterator&lt;br /&gt;
          &lt;br /&gt;
          # version 7 has a version attribute&lt;br /&gt;
          root.set(&amp;quot;version&amp;quot;, &amp;quot;7&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Commit with a meaningful message, e.g., in my case it was:&lt;br /&gt;
 hg commit -m &amp;quot;XML iterator fix for Python &amp;lt; 2.7. tested on Python 2.6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And push it back to BitBucket:&lt;br /&gt;
 kornerr@koren:~/ceed$ '''hg push'''&lt;br /&gt;
 pushing to https://bitbucket.org/kornerr/ceed&lt;br /&gt;
 searching for changes&lt;br /&gt;
 http authorization equired&lt;br /&gt;
 realm: Bitbucket.org HTTP&lt;br /&gt;
 user: '''kornerr'''&lt;br /&gt;
 password: &lt;br /&gt;
 remote: adding changesets&lt;br /&gt;
 remote: adding manifests&lt;br /&gt;
 remote: adding file changes&lt;br /&gt;
 remote: added 1 changesets with 1 changes to 1 files&lt;br /&gt;
 remote: bb/acl: kornerr is allowed. accepted payload.&lt;br /&gt;
&lt;br /&gt;
You can see your changes at BitBucket now:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_contrib_push.png]]&lt;br /&gt;
&lt;br /&gt;
'''Note: Please, don't try to merge many fixes into single commit. Place each fix into its own commit. It will be easier for us to understand your fixes and accept it faster.'''&lt;br /&gt;
&lt;br /&gt;
== 4. Contact CEGUI developer(s) ==&lt;br /&gt;
Use IRC, mail, or mantis. Tell the URL of your repository and list the changesets you want into upstream.&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Contribution&amp;diff=4632</id>
		<title>Contribution</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Contribution&amp;diff=4632"/>
				<updated>2011-09-26T12:39:31Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The article describes how you can contribute to a CEGUI project with the help of [http://bitbucket.org BitBucket].&lt;br /&gt;
&lt;br /&gt;
We prefer your contribution through BitBucket, because it simplifies the development process for both you and us. If your contribution needs a bit more tuning, we just say so and you make another commit to your BitBucket repository. After we are satisfied with the quality of the fixes, we simply pull them from you repository. And since your repository is located under your nickname, we will know you can be trusted. So it's a win-win for everybody.&lt;br /&gt;
&lt;br /&gt;
If you prefer video tutorials, you can [http://www.youtube.com/watch?v=ZjFOvLGnAiU watch this tutorial].&lt;br /&gt;
&lt;br /&gt;
'''Note''': This tutorial describes contribution to [[CEED]] (CEGUI Editor) as a user '''kornerr''' as an example.&lt;br /&gt;
&lt;br /&gt;
== 1. Import CEED repository to BitBucket ==&lt;br /&gt;
&lt;br /&gt;
Go to [https://bitbucket.org/repo/import Repositories -&amp;gt; import repository].&lt;br /&gt;
&lt;br /&gt;
Input the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Source&lt;br /&gt;
| Mercurial repository&lt;br /&gt;
|-&lt;br /&gt;
| URL&lt;br /&gt;
| http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED&lt;br /&gt;
|-&lt;br /&gt;
| Requires authorization&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| Name&lt;br /&gt;
| CEED&lt;br /&gt;
|-&lt;br /&gt;
| Private&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| Language&lt;br /&gt;
| Python (CEGUI itself is C++)&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| CEED contribution&lt;br /&gt;
|-&lt;br /&gt;
| Website&lt;br /&gt;
| Leave blank&lt;br /&gt;
|-&lt;br /&gt;
| Wiki&lt;br /&gt;
| Leave blank&lt;br /&gt;
|-&lt;br /&gt;
| Issue tracking&lt;br /&gt;
| Leave blank&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Press '''Import'''.&lt;br /&gt;
&lt;br /&gt;
BitBucket will import the repository:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_contrib_import_repo.png]]&lt;br /&gt;
&lt;br /&gt;
Wait a bit, and you're done:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed contrib import repo done.png]]&lt;br /&gt;
&lt;br /&gt;
== 2. Clone from BitBucket to your machine ==&lt;br /&gt;
 cd ~&lt;br /&gt;
 hg clone https://bitbucket.org/kornerr/ceed&lt;br /&gt;
&lt;br /&gt;
This will clone CEED repository from BitBucket to your home directory.&lt;br /&gt;
&lt;br /&gt;
== 3. Make changes, commit, and push ==&lt;br /&gt;
&lt;br /&gt;
Make changes. Mine were:&lt;br /&gt;
 diff --git a/compatibility/looknfeel/cegui.py b/compatibility/looknfeel/cegui.py&lt;br /&gt;
 --- a/compatibility/looknfeel/cegui.py&lt;br /&gt;
 +++ b/compatibility/looknfeel/cegui.py&lt;br /&gt;
 @@ -95,6 +95,9 @@&lt;br /&gt;
          log = &amp;quot;&amp;quot;&lt;br /&gt;
          &lt;br /&gt;
          root = ElementTree.fromstring(data)&lt;br /&gt;
 +        # Fix for Python &amp;lt; 2.7.&lt;br /&gt;
 +        if not hasattr(root, &amp;quot;iter&amp;quot;):&lt;br /&gt;
 +            root.iter = root.getiterator&lt;br /&gt;
          &lt;br /&gt;
          # version 7 has a version attribute&lt;br /&gt;
          root.set(&amp;quot;version&amp;quot;, &amp;quot;7&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Commit with a meaningful message, e.g., in my case it was:&lt;br /&gt;
 hg commit -m &amp;quot;XML iterator fix for Python &amp;lt; 2.7. tested on Python 2.6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
And push it back to BitBucket:&lt;br /&gt;
 kornerr@koren:~/ceed$ '''hg push'''&lt;br /&gt;
 pushing to https://bitbucket.org/kornerr/ceed&lt;br /&gt;
 searching for changes&lt;br /&gt;
 http authorization equired&lt;br /&gt;
 realm: Bitbucket.org HTTP&lt;br /&gt;
 user: '''kornerr'''&lt;br /&gt;
 password: &lt;br /&gt;
 remote: adding changesets&lt;br /&gt;
 remote: adding manifests&lt;br /&gt;
 remote: adding file changes&lt;br /&gt;
 remote: added 1 changesets with 1 changes to 1 files&lt;br /&gt;
 remote: bb/acl: kornerr is allowed. accepted payload.&lt;br /&gt;
&lt;br /&gt;
You can see your changes at BitBucket now:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_contrib_push.png]]&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=File:Ceed_contrib_push.png&amp;diff=4631</id>
		<title>File:Ceed contrib push.png</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=File:Ceed_contrib_push.png&amp;diff=4631"/>
				<updated>2011-09-26T12:38:20Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Contribution&amp;diff=4630</id>
		<title>Contribution</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Contribution&amp;diff=4630"/>
				<updated>2011-09-25T12:23:20Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: Created page with &amp;quot;The article describes how you can contribute to a CEGUI project with the help of [http://bitbucket.org BitBucket].  We prefer your contribution through BitBucket, because it simp...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The article describes how you can contribute to a CEGUI project with the help of [http://bitbucket.org BitBucket].&lt;br /&gt;
&lt;br /&gt;
We prefer your contribution through BitBucket, because it simplifies the development process for both you and us. If your contribution needs a bit more tuning, we just say so and you make another commit to your BitBucket repository. After we are satisfied with the quality of the fixes, we simply pull them from you repository. And since your repository is located under your nickname, we will know you can be trusted. So it's a win-win for everybody.&lt;br /&gt;
&lt;br /&gt;
If you prefer video tutorials, you can [http://www.youtube.com/watch?v=ZjFOvLGnAiU watch this tutorial].&lt;br /&gt;
&lt;br /&gt;
'''Note''': This tutorial describes contribution to [[CEED]] (CEGUI Editor) as an example.&lt;br /&gt;
&lt;br /&gt;
== 1. Import CEED repository to BitBucket ==&lt;br /&gt;
&lt;br /&gt;
Go to [https://bitbucket.org/repo/import Repositories -&amp;gt; import repository].&lt;br /&gt;
&lt;br /&gt;
Input the following:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Source&lt;br /&gt;
| Mercurial repository&lt;br /&gt;
|-&lt;br /&gt;
| URL&lt;br /&gt;
| http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED&lt;br /&gt;
|-&lt;br /&gt;
| Requires authorization&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| Name&lt;br /&gt;
| CEED&lt;br /&gt;
|-&lt;br /&gt;
| Private&lt;br /&gt;
| No&lt;br /&gt;
|-&lt;br /&gt;
| Language&lt;br /&gt;
| Python (CEGUI itself is C++)&lt;br /&gt;
|-&lt;br /&gt;
| Description&lt;br /&gt;
| CEED contribution&lt;br /&gt;
|-&lt;br /&gt;
| Website&lt;br /&gt;
| Leave blank&lt;br /&gt;
|-&lt;br /&gt;
| Wiki&lt;br /&gt;
| Leave blank&lt;br /&gt;
|-&lt;br /&gt;
| Issue tracking&lt;br /&gt;
| Leave blank&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Press '''Import'''.&lt;br /&gt;
&lt;br /&gt;
BitBucket will import the repository:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_contrib_import_repo.png]]&lt;br /&gt;
&lt;br /&gt;
Wait a bit, and you're done:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed contrib import repo done.png]]&lt;br /&gt;
&lt;br /&gt;
CONTINUE HERE&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=File:Ceed_contrib_import_repo_done.png&amp;diff=4629</id>
		<title>File:Ceed contrib import repo done.png</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=File:Ceed_contrib_import_repo_done.png&amp;diff=4629"/>
				<updated>2011-09-25T12:21:42Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: uploaded a new version of &amp;amp;quot;File:Ceed contrib import repo done.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=File:Ceed_contrib_import_repo_done.png&amp;diff=4628</id>
		<title>File:Ceed contrib import repo done.png</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=File:Ceed_contrib_import_repo_done.png&amp;diff=4628"/>
				<updated>2011-09-25T12:19:42Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=File:Ceed_contrib_import_repo.png&amp;diff=4627</id>
		<title>File:Ceed contrib import repo.png</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=File:Ceed_contrib_import_repo.png&amp;diff=4627"/>
				<updated>2011-09-25T12:17:28Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=CEED&amp;diff=4626</id>
		<title>CEED</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=CEED&amp;diff=4626"/>
				<updated>2011-09-23T15:46:45Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Upcoming CEGUI unified editor. Currently in the early stages. Includes project management and multi-file/multi-tab editing.&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
CEED depends on an yet unreleased CEGUI 0.8, so you will need to set up a special environment to run it.&lt;br /&gt;
&lt;br /&gt;
[http://www.cegui.org.uk/phpBB2/viewtopic.php?f=15&amp;amp;t=5566 Original post at the forums]&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
You need CMake, Python 2.6, PyOpenGL, PySide (+ utils/tools), Boost.Python.&lt;br /&gt;
&lt;br /&gt;
==== Debian Wheezy ====&lt;br /&gt;
&lt;br /&gt;
PySide is part of Sid at the moment, so you have to add its repository address to your /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 apt-get install cmake python-opengl pyside-tools boost-python&lt;br /&gt;
&lt;br /&gt;
=== Build CEGUI and PyCEGUI ===&lt;br /&gt;
&lt;br /&gt;
 mkdir -p cegui_mk2/build &lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/cegui_mk2 cegui_mk2/cegui&lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED&lt;br /&gt;
 cd cegui_mk2/build&lt;br /&gt;
 cmake -DCEGUI_BUILD_PYTHON_MODULES=ON ../cegui&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
 cd CEED&lt;br /&gt;
 ./runwrapper.sh&lt;br /&gt;
 python CEED.py&lt;br /&gt;
&lt;br /&gt;
You will see a window like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_main_window.png]]&lt;br /&gt;
&lt;br /&gt;
== Project ==&lt;br /&gt;
&lt;br /&gt;
Unlike old editors (CELayoutEditor and CEImagesetEditor), CEED has a notion of a project. Each project has its own combination of resources and runs its own CEGUI version to render your CEGUI resources. This allows you to have more that one scheme loaded at a time.&lt;br /&gt;
&lt;br /&gt;
To create a new project, you should go to File -&amp;gt; New project.&lt;br /&gt;
&lt;br /&gt;
The dialog appears. You should input project name and location of the &amp;quot;.project&amp;quot; file. '''Note''': parent directory of the &amp;quot;.project&amp;quot; file must exist.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project.png]]&lt;br /&gt;
&lt;br /&gt;
After you press OK, a warning appears:&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_new_project_warning.png]]&lt;br /&gt;
&lt;br /&gt;
When you press OK, CEED sets up the paths to usual CEGUI resource directories. It suggests that the directory with &amp;quot;.project&amp;quot; file contains &amp;quot;animations&amp;quot;, &amp;quot;fonts&amp;quot;, and other CEGUI directories. If you got the above warning, your directory does not contain the necessary &amp;quot;scheme&amp;quot; directory. We will specify correct paths later.&lt;br /&gt;
&lt;br /&gt;
== Project settings ==&lt;br /&gt;
&lt;br /&gt;
Go to Edit -&amp;gt; Project settings.&lt;br /&gt;
&lt;br /&gt;
[[Image:Ceed_project_settings.png]]&lt;br /&gt;
&lt;br /&gt;
CEED can create assets for CEGUI versions: 0.6 to 0.8. 0.7 is the latest stable, so select it.&lt;br /&gt;
&lt;br /&gt;
Point &amp;quot;Resource directory&amp;quot; to the place where &amp;quot;fonts&amp;quot;, &amp;quot;scheme&amp;quot; and the rest directories are located, then press &amp;quot;Apply&amp;quot;. It will change the paths below.&lt;br /&gt;
&lt;br /&gt;
Press OK and it might load your resources. It failed for me [CONTINUE HERE]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Currently you may have problems with Imagesets that use TGA, since some versions of Qt may be built without TGA support. CEGUI 0.8 has all imagery as PNG (CEGUI 0.7 used TGA), and we advise you to use PNG instead of TGA.&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=File:Ceed_project_settings.png&amp;diff=4625</id>
		<title>File:Ceed project settings.png</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=File:Ceed_project_settings.png&amp;diff=4625"/>
				<updated>2011-09-23T15:38:49Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=File:Ceed_new_project_warning.png&amp;diff=4624</id>
		<title>File:Ceed new project warning.png</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=File:Ceed_new_project_warning.png&amp;diff=4624"/>
				<updated>2011-09-23T15:30:49Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=File:Ceed_new_project.png&amp;diff=4623</id>
		<title>File:Ceed new project.png</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=File:Ceed_new_project.png&amp;diff=4623"/>
				<updated>2011-09-23T15:28:12Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: uploaded a new version of &amp;amp;quot;File:Ceed new project.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=File:Ceed_new_project.png&amp;diff=4622</id>
		<title>File:Ceed new project.png</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=File:Ceed_new_project.png&amp;diff=4622"/>
				<updated>2011-09-23T15:24:33Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=File:Ceed_main_window.png&amp;diff=4621</id>
		<title>File:Ceed main window.png</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=File:Ceed_main_window.png&amp;diff=4621"/>
				<updated>2011-09-23T15:22:36Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: uploaded a new version of &amp;amp;quot;File:Ceed main window.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=File:Ceed_main_window.png&amp;diff=4620</id>
		<title>File:Ceed main window.png</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=File:Ceed_main_window.png&amp;diff=4620"/>
				<updated>2011-09-23T15:21:46Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=CEED&amp;diff=4619</id>
		<title>CEED</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=CEED&amp;diff=4619"/>
				<updated>2011-09-20T14:05:47Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Upcoming CEGUI unified editor. Currently in the early stages. Includes project management and multi-file/multi-tab editing.&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
CEED depends on an yet unreleased CEGUI 0.8, so you will need to set up a special environment to run it.&lt;br /&gt;
&lt;br /&gt;
[http://www.cegui.org.uk/phpBB2/viewtopic.php?f=15&amp;amp;t=5566 Original post at the forums]&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
You need CMake, Python 2.6, PyOpenGL, PySide (+ utils/tools), Boost.Python.&lt;br /&gt;
&lt;br /&gt;
==== Debian Wheezy ====&lt;br /&gt;
&lt;br /&gt;
PySide is part of Sid at the moment, so you have to add its repository address to your /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 apt-get install cmake python-opengl pyside-tools boost-python&lt;br /&gt;
&lt;br /&gt;
=== Build CEGUI and PyCEGUI ===&lt;br /&gt;
&lt;br /&gt;
 mkdir -p cegui_mk2/build &lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/cegui_mk2 cegui_mk2/cegui&lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED&lt;br /&gt;
 cd cegui_mk2/build&lt;br /&gt;
 cmake -DCEGUI_BUILD_PYTHON_MODULES=ON ../cegui&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
 cd CEED&lt;br /&gt;
 ./runwrapper.sh&lt;br /&gt;
 python CEED.py&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Unlike old editors (CELayoutEditor and CEImagesetEditor), CEED has a notion of a project. Each project has its own combination of resources and runs its own CEGUI version to render your CEGUI resources. This allows you to have more that one scheme loaded at a time.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Currently you may have problems with Imagesets that use TGA, since some versions of Qt may be built without TGA support. CEGUI 0.8 has all imagery as PNG (CEGUI 0.7 used TGA), and we advise you to use PNG instead of TGA.&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=CEED&amp;diff=4618</id>
		<title>CEED</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=CEED&amp;diff=4618"/>
				<updated>2011-09-20T14:05:16Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Upcoming CEGUI unified editor. Currently in the early stages. Includes project management and multi-file/multi-tab editing.&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
CEED depends on an yet unreleased CEGUI 0.8, so you will need to set up a special environment to run it.&lt;br /&gt;
&lt;br /&gt;
[http://www.cegui.org.uk/phpBB2/viewtopic.php?f=15&amp;amp;t=5566 Original post at the forums]&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
You need CMake, Python 2.6, PyOpenGL, PySide (+ utils/tools), Boost.Python.&lt;br /&gt;
&lt;br /&gt;
==== Debian Wheezy ====&lt;br /&gt;
&lt;br /&gt;
PySide is part of Sid at the moment, so you have to add its repository address to your /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
 apt-get install cmake python-opengl pyside-tools boost-python&lt;br /&gt;
&lt;br /&gt;
=== Build CEGUI and PyCEGUI ===&lt;br /&gt;
&lt;br /&gt;
 mkdir -p cegui_mk2/build &lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/cegui_mk2 cegui_mk2/cegui&lt;br /&gt;
 hg clone http://crayzedsgui.hg.sourceforge.net/hgroot/crayzedsgui/CEED&lt;br /&gt;
 cd cegui_mk2/build&lt;br /&gt;
 cmake -DCEGUI_BUILD_PYTHON_MODULES=ON ../cegui&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Launch ==&lt;br /&gt;
&lt;br /&gt;
 cd CEED&lt;br /&gt;
 ./runwrapper.sh&lt;br /&gt;
 python CEED.py&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Unlike old editors (CELayoutEditor and CEImagesetEditor), CEED has a notion of a project. Each project has it's own combination of resources and runs its own CEGUI version to render your CEGUI resources. This allows you to have more that one scheme loaded at a time.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
Currently you may have problems with Imagesets that use TGA, since some versions of Qt may be built without TGA support. CEGUI 0.8 has all imagery as PNG (CEGUI 0.7 used TGA), and we advise you to use PNG instead of TGA.&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Use_your_custom_widget_in_place_of_CEGUI_standard_one&amp;diff=4251</id>
		<title>Use your custom widget in place of CEGUI standard one</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Use_your_custom_widget_in_place_of_CEGUI_standard_one&amp;diff=4251"/>
				<updated>2011-03-04T15:57:34Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.7}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This article describes how to inherit CEGUI widget, enhance it the way you like, and then make sure it is used in place of CEGUI standard one when met in a layout file.&lt;br /&gt;
&lt;br /&gt;
We will enhance CEGUI::MultiColumnList class. It's very powerful, but it's nice to have an easier interface for row addition.&lt;br /&gt;
&lt;br /&gt;
== CustomMCL ==&lt;br /&gt;
&lt;br /&gt;
This is our enhanced version of CEGUI::MultiColumnList.&lt;br /&gt;
&lt;br /&gt;
Header:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
class CustomMCL : public CEGUI::MultiColumnList {&lt;br /&gt;
    public:&lt;br /&gt;
        CustomMCL(const CEGUI::String &amp;amp;type, const CEGUI::String &amp;amp;name);&lt;br /&gt;
&lt;br /&gt;
        void clear();&lt;br /&gt;
        void createItem(const CEGUI::String &amp;amp;text);&lt;br /&gt;
        void createRow();&lt;br /&gt;
&lt;br /&gt;
        // Unique widget name throughout CEGUI.&lt;br /&gt;
        static CEGUI::String WidgetTypeName;&lt;br /&gt;
&lt;br /&gt;
    private:&lt;br /&gt;
        int mRowID;&lt;br /&gt;
        int mColID;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Source:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::String CustomMCL::WidgetTypeName = &amp;quot;CustomMCL&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
CustomMCL::CustomMCL(const CEGUI::String &amp;amp;type, const CEGUI::String &amp;amp;name) :&lt;br /&gt;
        CEGUI::MultiColumnList(type, name),&lt;br /&gt;
        mRowID(-1) { }&lt;br /&gt;
&lt;br /&gt;
void CustomMCL::clear() {&lt;br /&gt;
    resetList();&lt;br /&gt;
    mRowID = -1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void CustomMCL::createItem(const CEGUI::String &amp;amp;text) {&lt;br /&gt;
    CEGUI::ListboxTextItem *item = new CEGUI::ListboxTextItem(text);&lt;br /&gt;
    setItem(item, mColID++, mRowID);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void CustomMCL::createRow() {&lt;br /&gt;
    mRowID++;&lt;br /&gt;
    mColID = 0;&lt;br /&gt;
    addRow(mRowID);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Custom widget must contain the following public static variable:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
static CEGUI::String WidgetTypeName;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
with the name unique among all CEGUI widgets. It's a name our custom widget will be registered under. We named it 'CustomMCL'.&lt;br /&gt;
&lt;br /&gt;
Register the widget:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::WindowFactoryManager::getSingleton().addFactory&amp;lt;CEGUI::TplWindowFactory&amp;lt;CustomMCL&amp;gt; &amp;gt;();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure our class is used in place of CEGUI one when met in a layout:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::WindowFactoryManager::getSingleton().addWindowTypeAlias(&amp;quot;CEGUI/MultiColumnList&amp;quot;, &amp;quot;CustomMCL&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&lt;br /&gt;
Download [http://sourceforge.net/projects/osrpgcreation/files/Other/cegui_custom_widget.zip/download| example source code] (requires OGRE and OIS additionally)&lt;br /&gt;
&lt;br /&gt;
Screenshot:&lt;br /&gt;
[[File:Cegui_custom_widget.png|center]]&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Use_your_custom_widget_in_place_of_CEGUI_standard_one&amp;diff=4134</id>
		<title>Use your custom widget in place of CEGUI standard one</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Use_your_custom_widget_in_place_of_CEGUI_standard_one&amp;diff=4134"/>
				<updated>2011-03-03T18:48:58Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.7}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This article describes how to inherit CEGUI widget, enhance it the way you like, and then make sure it is used in place of CEGUI standard one when met in a layout file.&lt;br /&gt;
&lt;br /&gt;
We will enhance CEGUI::MultiColumnList class. It's very powerful, but it's nice to have an easier interface for row addition.&lt;br /&gt;
&lt;br /&gt;
== CustomMCL ==&lt;br /&gt;
&lt;br /&gt;
This is our enhanced version of CEGUI::MultiColumnList.&lt;br /&gt;
&lt;br /&gt;
Header:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
class CustomMCL : public CEGUI::MultiColumnList {&lt;br /&gt;
    public:&lt;br /&gt;
        CustomMCL(const CEGUI::String &amp;amp;type, const CEGUI::String &amp;amp;name);&lt;br /&gt;
&lt;br /&gt;
        void clear();&lt;br /&gt;
        void createItem(const CEGUI::String &amp;amp;text);&lt;br /&gt;
        void createRow();&lt;br /&gt;
&lt;br /&gt;
        // Unique widget name throughout CEGUI.&lt;br /&gt;
        static CEGUI::String WidgetTypeName;&lt;br /&gt;
&lt;br /&gt;
    private:&lt;br /&gt;
        int mRowID;&lt;br /&gt;
        int mColID;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Source:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::String CustomMCL::WidgetTypeName = &amp;quot;CustomMCL&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
CustomMCL::CustomMCL(const CEGUI::String &amp;amp;type, const CEGUI::String &amp;amp;name) :&lt;br /&gt;
        CEGUI::MultiColumnList(type, name),&lt;br /&gt;
        mRowID(-1) { }&lt;br /&gt;
&lt;br /&gt;
void CustomMCL::clear() {&lt;br /&gt;
    resetList();&lt;br /&gt;
    mRowID = -1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void CustomMCL::createItem(const CEGUI::String &amp;amp;text) {&lt;br /&gt;
    CEGUI::ListboxTextItem *item = new CEGUI::ListboxTextItem(text);&lt;br /&gt;
    setItem(item, mColID++, mRowID);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void CustomMCL::createRow() {&lt;br /&gt;
    mRowID++;&lt;br /&gt;
    mColID = 0;&lt;br /&gt;
    addRow(mRowID);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Custom widget must contain the following public static variable:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
static CEGUI::String WidgetTypeName;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
with the name unique among all CEGUI widgets. It's a name our custom widget will be registered under. We named it 'CustomMCL'.&lt;br /&gt;
&lt;br /&gt;
Register the widget:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::WindowFactoryManager::getSingleton().addFactory&amp;lt;CEGUI::TplWindowFactory&amp;lt;CustomMCL&amp;gt; &amp;gt;();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure our class is used in place of CEGUI one when met in a layout:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::WindowFactoryManager::getSingleton().addWindowTypeAlias(&amp;quot;CEGUI/MultiColumnList&amp;quot;, &amp;quot;CustomMCL&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example source code (requires OGRE and OIS additionally):&lt;br /&gt;
[TODO: put link to opengamestudio SF / Other / file]&lt;br /&gt;
&lt;br /&gt;
Screenshot:&lt;br /&gt;
[[Image:Cegui_custom_widget.png|center]]&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Use_your_custom_widget_in_place_of_CEGUI_standard_one&amp;diff=4133</id>
		<title>Use your custom widget in place of CEGUI standard one</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Use_your_custom_widget_in_place_of_CEGUI_standard_one&amp;diff=4133"/>
				<updated>2011-03-03T18:46:01Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: Created page with &amp;quot;{{VersionBadge|0.7}}  == Introduction ==  This article describes how to inherit CEGUI widget, enhance it the way you like, and then make sure it is used in place of CEGUI standar...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.7}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
This article describes how to inherit CEGUI widget, enhance it the way you like, and then make sure it is used in place of CEGUI standard one when met in a layout file.&lt;br /&gt;
&lt;br /&gt;
We will enhance CEGUI::MultiColumnList class. It's very powerful, but it's nice to have an easier interface for row addition.&lt;br /&gt;
&lt;br /&gt;
== CustomMCL ==&lt;br /&gt;
&lt;br /&gt;
This is our enhanced version of CEGUI::MultiColumnList.&lt;br /&gt;
&lt;br /&gt;
Header:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
class CustomMCL : public CEGUI::MultiColumnList {&lt;br /&gt;
    public:&lt;br /&gt;
        CustomMCL(const CEGUI::String &amp;amp;type, const CEGUI::String &amp;amp;name);&lt;br /&gt;
&lt;br /&gt;
        void clear();&lt;br /&gt;
        void createItem(const CEGUI::String &amp;amp;text);&lt;br /&gt;
        void createRow();&lt;br /&gt;
&lt;br /&gt;
        // Unique widget name throughout CEGUI.&lt;br /&gt;
        static CEGUI::String WidgetTypeName;&lt;br /&gt;
&lt;br /&gt;
    private:&lt;br /&gt;
        int mRowID;&lt;br /&gt;
        int mColID;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Source:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::String CustomMCL::WidgetTypeName = &amp;quot;CustomMCL&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
CustomMCL::CustomMCL(const CEGUI::String &amp;amp;type, const CEGUI::String &amp;amp;name) :&lt;br /&gt;
        CEGUI::MultiColumnList(type, name),&lt;br /&gt;
        mRowID(-1) { }&lt;br /&gt;
&lt;br /&gt;
void CustomMCL::clear() {&lt;br /&gt;
    resetList();&lt;br /&gt;
    mRowID = -1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void CustomMCL::createItem(const CEGUI::String &amp;amp;text) {&lt;br /&gt;
    CEGUI::ListboxTextItem *item = new CEGUI::ListboxTextItem(text);&lt;br /&gt;
    setItem(item, mColID++, mRowID);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void CustomMCL::createRow() {&lt;br /&gt;
    mRowID++;&lt;br /&gt;
    mColID = 0;&lt;br /&gt;
    addRow(mRowID);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Custom widget must contain the following public static variable:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
static CEGUI::String WidgetTypeName;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
with the name unique among all CEGUI widgets. It's a name our custom widget will be registered under. We named it 'CustomMCL'.&lt;br /&gt;
&lt;br /&gt;
Register the widget:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::WindowFactoryManager::getSingleton().addFactory&amp;lt;CEGUI::TplWindowFactory&amp;lt;CustomMCL&amp;gt; &amp;gt;();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure our class is used in place of CEGUI one when met in a layout:&lt;br /&gt;
&amp;lt;source lang = &amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::WindowFactoryManager::getSingleton().addWindowTypeAlias(&amp;quot;CEGUI/MultiColumnList&amp;quot;, &amp;quot;CustomMCL&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example source code (requires OGRE and OIS additionally):&lt;br /&gt;
[TODO: put link to opengamestudio SF / Other / file]&lt;br /&gt;
&lt;br /&gt;
Screenshot:&lt;br /&gt;
[[Image:Cegui_custom_widget.png|center]]&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=File:Cegui_custom_widget.png&amp;diff=4132</id>
		<title>File:Cegui custom widget.png</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=File:Cegui_custom_widget.png&amp;diff=4132"/>
				<updated>2011-03-03T18:38:52Z</updated>
		
		<summary type="html">&lt;p&gt;Kornerr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kornerr</name></author>	</entry>

	</feed>