Revision: 407
http://python-ogre.svn.sourceforge.net/python-ogre/?rev=407&view=rev
Author: andy_miller
Date: 2007-10-02 23:30:20 -0700 (Tue, 02 Oct 2007)
Log Message:
-----------
More demo changes ready for 1.1
Modified Paths:
--------------
trunk/python-ogre/demos/media/materials/programs/Grass.cg
trunk/python-ogre/demos/nxogre/resources.cfg
trunk/python-ogre/demos/ogreal/resources.cfg
Added Paths:
-----------
trunk/python-ogre/demos/cegui/
trunk/python-ogre/demos/cegui/CEGUI_framework.py
trunk/python-ogre/demos/cegui/Demo_CEGUI_DragnDrop.py
trunk/python-ogre/demos/cegui/Demo_CEGUI_Facial.py
trunk/python-ogre/demos/cegui/Demo_CEGUI_Gui.py
trunk/python-ogre/demos/cegui/Demo_CEGUI_NewGui.py
trunk/python-ogre/demos/cegui/SampleFramework.py
trunk/python-ogre/demos/cegui/plugins.cfg
trunk/python-ogre/demos/cegui/resources.cfg
trunk/python-ogre/demos/cegui/tofix/
trunk/python-ogre/demos/cegui/tofix/DebugConsoleDemo.py
trunk/python-ogre/demos/cegui/tofix/LayoutCreationDemo.py
trunk/python-ogre/demos/cegui/tofix/ManualCreationDemo.py
trunk/python-ogre/demos/cegui/tofix/MenuDemo.py
trunk/python-ogre/demos/cegui/tofix/MultiColumnListBox6.py
trunk/python-ogre/demos/cegui/tofix/MultipleLayoutDemo.py
trunk/python-ogre/demos/cegui/tofix/RenderToTextureDemo.py
trunk/python-ogre/demos/cegui/tofix/TabControlDemo.py
trunk/python-ogre/demos/cegui/tofix/VanillaBackgroundDemo.py
trunk/python-ogre/demos/cegui/tofix/WindowsBackgroundDemo.py
trunk/python-ogre/demos/nxogre/media/
trunk/python-ogre/demos/nxogre/media/ComplexMeshes/
trunk/python-ogre/demos/nxogre/media/ComplexMeshes/cloth.material
trunk/python-ogre/demos/nxogre/media/ComplexMeshes/nx.flag.png
trunk/python-ogre/demos/nxogre/media/Env/
trunk/python-ogre/demos/nxogre/media/Env/nx.floor.material
trunk/python-ogre/demos/nxogre/media/Env/nx.floor.mesh
trunk/python-ogre/demos/nxogre/media/Env/nx.floor.png
trunk/python-ogre/demos/nxogre/media/Env/nx.floor.shadowalpha.png
trunk/python-ogre/demos/nxogre/media/Env/nx.skygrid.png
trunk/python-ogre/demos/nxogre/media/Essential/
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUI/
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUI/bgui.button.active.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUI/bgui.button.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUI/bgui.material
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUI/bgui.pointer.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUI/bgui.textinput.active.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUI/bgui.textinput.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUI/bgui.window.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUI/bgui.window.resize.active.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUI/bgui.window.resize.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUI/bgui.window.titlebar.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/bgui.exit.active.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/bgui.exit.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/bgui.pause.active.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/bgui.pause.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/debug.active.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/debug.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/debugon.active.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/debugon.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/editor.material.material
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/editor.material.text.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/editor.material.window.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/editor.material.window.titlebar.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/editor.microtext.active.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/editor.microtext.confirm.active.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/editor.microtext.confirm.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/editor.microtext.do.active.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/editor.microtext.do.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/editor.microtext.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/editor.microtext.up.active.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/editor.microtext.up.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/nxbgui.material
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/pause.active.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/pause.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/play.active.png
trunk/python-ogre/demos/nxogre/media/Essential/BetaGUIExtended/play.png
trunk/python-ogre/demos/nxogre/media/Essential/Boot/
trunk/python-ogre/demos/nxogre/media/Essential/Boot/101.jpg
trunk/python-ogre/demos/nxogre/media/Essential/Boot/102.jpg
trunk/python-ogre/demos/nxogre/media/Essential/Boot/103.jpg
trunk/python-ogre/demos/nxogre/media/Essential/Boot/any.jpg
trunk/python-ogre/demos/nxogre/media/Essential/Boot/arrow1.png
trunk/python-ogre/demos/nxogre/media/Essential/Boot/axis_x.png
trunk/python-ogre/demos/nxogre/media/Essential/Boot/axis_y.png
trunk/python-ogre/demos/nxogre/media/Essential/Boot/axis_z.png
trunk/python-ogre/demos/nxogre/media/Essential/Boot/bodyguide1m.png
trunk/python-ogre/demos/nxogre/media/Essential/Boot/boot.material
trunk/python-ogre/demos/nxogre/media/Essential/Boot/debug.png
trunk/python-ogre/demos/nxogre/media/Essential/Boot/gui.material
trunk/python-ogre/demos/nxogre/media/Essential/Boot/gui_loading.png
trunk/python-ogre/demos/nxogre/media/Essential/Boot/gui_loading_notice.png
trunk/python-ogre/demos/nxogre/media/Essential/Boot/gui_options.png
trunk/python-ogre/demos/nxogre/media/Essential/Boot/gui_options_selected.png
trunk/python-ogre/demos/nxogre/media/Essential/Boot/gui_pause.png
trunk/python-ogre/demos/nxogre/media/Essential/Boot/gui_save.png
trunk/python-ogre/demos/nxogre/media/Essential/Boot/gui_save_selected.png
trunk/python-ogre/demos/nxogre/media/Essential/Boot/gui_slowfast.png
trunk/python-ogre/demos/nxogre/media/Essential/Boot/nx.body.axis.mesh
trunk/python-ogre/demos/nxogre/media/Essential/Boot/nx.bodyguide.material
trunk/python-ogre/demos/nxogre/media/Essential/Boot/nx.bodyguide.mesh
trunk/python-ogre/demos/nxogre/media/Essential/Fonts/
trunk/python-ogre/demos/nxogre/media/Essential/Fonts/MgOpen.license.txt
trunk/python-ogre/demos/nxogre/media/Essential/Fonts/MgOpen.png
trunk/python-ogre/demos/nxogre/media/Essential/Fonts/MgOpen.ttf
trunk/python-ogre/demos/nxogre/media/Essential/Fonts/MgOpenAsBitmap.fontdef
trunk/python-ogre/demos/nxogre/media/Essential/Fonts/MgOpenAsNxOgreFont.fontdef
trunk/python-ogre/demos/nxogre/media/Essential/icon.cube.png
trunk/python-ogre/demos/nxogre/media/Essential/icon.sphere.png
trunk/python-ogre/demos/nxogre/media/Essential/widget.add.active.png
trunk/python-ogre/demos/nxogre/media/Essential/widget.add.png
trunk/python-ogre/demos/nxogre/media/Essential/widget.angle.over.png
trunk/python-ogre/demos/nxogre/media/Essential/widget.angle.png
trunk/python-ogre/demos/nxogre/media/Essential/widget.create.png
trunk/python-ogre/demos/nxogre/media/Essential/widget.edit.png
trunk/python-ogre/demos/nxogre/media/Essential/widget.material.over.png
trunk/python-ogre/demos/nxogre/media/Essential/widget.material.png
trunk/python-ogre/demos/nxogre/media/Essential/widget.mm.bodies.over.png
trunk/python-ogre/demos/nxogre/media/Essential/widget.mm.bodies.png
trunk/python-ogre/demos/nxogre/media/Essential/widget.mm.fx.over.png
trunk/python-ogre/demos/nxogre/media/Essential/widget.mm.fx.png
trunk/python-ogre/demos/nxogre/media/Essential/widget.mm.joints.over.png
trunk/python-ogre/demos/nxogre/media/Essential/widget.mm.joints.png
trunk/python-ogre/demos/nxogre/media/Essential/widget.mm.png
trunk/python-ogre/demos/nxogre/media/Essential/widget.scale.over.png
trunk/python-ogre/demos/nxogre/media/Essential/widget.scale.png
trunk/python-ogre/demos/nxogre/media/Essential/widgets.material
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/Example_BumpMapping.cg
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/capsule.50cmx1m.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/capsule.prefix.material
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/convex.prefix.material
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/convex1.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/cube.1m-2m-1m.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/cube.1m.h.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/cube.1m.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/cube.1m.smooth.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/cube.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/cube.prefix.material
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/fish.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/hilight.material
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx-cube-diffuse.dds
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx-cube-normal.dds
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx-cube-spec.dds
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.70s1.dds
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.block.material
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.block.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.convex2.material
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.convex2.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.convex2.mesh.xml
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.cube.png
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.flag.png
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.lava.dds
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.planet1.dds
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.planet2.dds
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.sphere.50cm.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.sphere.50cm.mesh.xml
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.sphere.material
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.sphere1.png
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.stone1.dds
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.tartan.dds
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.tube.material
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.tube.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/nx.yellow1.png
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/prism.12x150cmx3m.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/prism.8x50cmx2m.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/racecar.material
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/racecar.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/racecar1.png
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/sandbox.material
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/sphere.2m.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/sphere.50cm.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/sphere.prefix.material
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/squirrel.mesh
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/squirrel.skeleton
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/tyre.png
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/wheel50cmx10cmx50cm.material
trunk/python-ogre/demos/nxogre/media/SimpleMeshes/wheel50cmx10cmx50cm.mesh
trunk/python-ogre/demos/nxogre/media/resources.cfg
trunk/python-ogre/demos/ogreal/media/
trunk/python-ogre/demos/ogreal/media/6chan.ogg
trunk/python-ogre/demos/ogreal/media/Siren.wav
trunk/python-ogre/demos/ogreal/media/motor_b8.wav
trunk/python-ogre/demos/ogreal/media/roar.wav
trunk/python-ogre/demos/plib/scream.ub
trunk/python-ogre/demos/plib/tuxr.mod
trunk/python-ogre/demos/plib/wheeee.ub
trunk/python-ogre/demos/plib/zzap.wav
Removed Paths:
-------------
trunk/python-ogre/demos/media/fonts/read_me.html
trunk/python-ogre/demos/navi/ogre.cfg
trunk/python-ogre/demos/ogreforests/ogre.cfg
trunk/python-ogre/demos/qgui/ogre.cfg
trunk/python-ogre/demos/theora/ogre.cfg
Added: trunk/python-ogre/demos/cegui/CEGUI_framework.py
===================================================================
--- trunk/python-ogre/demos/cegui/CEGUI_framework.py (rev 0)
+++ trunk/python-ogre/demos/cegui/CEGUI_framework.py 2007-10-03 06:30:20 UTC (rev 407)
@@ -0,0 +1,83 @@
+import ogre.gui.CEGUI as CEGUI
+import ogre.io.OIS as OIS
+import SampleFramework
+
+##----------------------------------------------------------------##
+def convertOISMouseButtonToCegui( buttonID):
+ if buttonID ==0:
+ return CEGUI.LeftButton
+ elif buttonID ==1:
+ return CEGUI.RightButton
+ elif buttonID ==2:
+ return CEGUI.MiddleButton
+ elif buttonID ==3:
+ return CEGUI.X1Button
+ else:
+ return CEGUI.LeftButton
+
+def _PointHack(x, y):
+ return CEGUI.Vector2(x, y)
+CEGUI.Point = _PointHack
+
+def cegui_reldim ( x ) :
+ return CEGUI.UDim((x),0)
+
+class MouseListener ( OIS.MouseListener ):
+ def __init__(self):
+ OIS.MouseListener.__init__( self)
+
+ ##----------------------------------------------------------------##
+ def mouseMoved( self, arg ):
+ CEGUI.System.getSingleton().injectMouseMove( arg.get_state().X.rel, arg.get_state().Y.rel )
+ return True
+
+ ##----------------------------------------------------------------##
+ def mousePressed( self, arg, id ):
+ CEGUI.System.getSingleton().injectMouseButtonDown(convertOISMouseButtonToCegui(id))
+ return True
+
+ ##----------------------------------------------------------------##
+ def mouseReleased( self, arg, id ):
+ CEGUI.System.getSingleton().injectMouseButtonUp(convertOISMouseButtonToCegui(id))
+ return True
+
+
+class GuiFrameListener(SampleFramework.FrameListener , OIS.KeyListener, OIS.MouseListener):
+
+ def __init__(self, renderWindow, camera, CEGUIRenderer):
+
+ SampleFramework.FrameListener.__init__(self, renderWindow, camera, True, True, True)
+ OIS.KeyListener.__init__(self)
+ self.mouselistener = MouseListener ()
+ #OIS.MouseListener.__init_(self)
+
+ self.Mouse.setEventCallback(self.mouselistener)
+ self.Keyboard.setEventCallback(self)
+
+ self.ShutdownRequested = False
+ self.GUIRenderer = CEGUIRenderer
+ self.keepRendering = True # whether to continue rendering or not
+ self.numScreenShots = 0 # screen shot count
+
+ ## Tell the frame listener to exit at the end of the next frame
+ def requestShutdown( self ):
+ self.ShutdownRequested = True
+
+ def frameEnded(self, evt):
+ if self.ShutdownRequested:
+ return False
+ else:
+ return SampleFramework.FrameListener.frameEnded(self, evt)
+
+ ##----------------------------------------------------------------##
+ def keyPressed( self, arg ):
+ if arg.key == OIS.KC_ESCAPE:
+ self.ShutdownRequested = True
+ CEGUI.System.getSingleton().injectKeyDown( arg.key )
+ CEGUI.System.getSingleton().injectChar( arg.text )
+ return True
+
+ ##----------------------------------------------------------------##
+ def keyReleased( self, arg ):
+ CEGUI.System.getSingleton().injectKeyUp( arg.key )
+ return True
Added: trunk/python-ogre/demos/cegui/Demo_CEGUI_DragnDrop.py
===================================================================
--- trunk/python-ogre/demos/cegui/Demo_CEGUI_DragnDrop.py (rev 0)
+++ trunk/python-ogre/demos/cegui/Demo_CEGUI_DragnDrop.py 2007-10-03 06:30:20 UTC (rev 407)
@@ -0,0 +1,285 @@
+# this code is in the public domain
+#
+# This demo shows simple drag and drop. Two frames each contain a grid
+# of Static Images. Each (slot) static image is assigned dragndrop events.
+# Move the static image containing the icon to different slots.
+#
+# This is based on a dragndrop example provided by Crazy Eddie:
+# http://www.cegui.org.uk/modules/newbb/viewtopic.php?topic_id=1040&forum=2&post_id=5852#forumpost5852
+#
+#
+# Shows:
+# Simple DragnDrop
+# Creating a list of events (hope this is correct)
+# Mouse Enter/Leaves Events & Change Mouse Cursor
+# Setting properties by Strings
+# Example control creation using UDIM
+# Simple Tooltip Text / injectTimePulse
+
+
+import ogre.renderer.OGRE as ogre
+import ogre.gui.CEGUI as cegui
+import SampleFramework
+
+from CEGUI_framework import *
+
+
+CONTAINER_POS = 0.05
+CONTAINER_SIZE = 0.90
+
+def createUVector2( x, y):
+ return CEGUI.UVector2(cegui.UDim(x,0), cegui.UDim(y,0))
+
+
+def CreateControl(widget_name,name,parent,pos,size,text='',showframe=False):
+
+ control = cegui.WindowManager.getSingleton().createWindow(widget_name, name)
+ parent.addChildWindow(control)
+ control.setPosition (createUVector2( pos[0],pos[1]) )
+ control.setSize(createUVector2(size[0], size[1]))
+ control.minimumSize = cegui.Size(0.01,0.01)
+ control.maximumSize = cegui.Size(1.0,1.0)
+ control.text = text
+ control.frameEnabled = showframe
+ return control
+
+
+
+# Drag and Drop Events
+def handleDragEnter(args):
+
+ # set frame colour for window on drag enter
+ args.window.setProperty("FrameColours", "tl:FF00FF00 tr:FF00FF00 bl:FF00FF00 br:FF00FF00")
+ return True
+
+def handleDragLeave(args):
+ # change to mouse move cursor
+ cegui.System.getSingleton().setDefaultMouseCursor("TaharezLook", "MouseMoveCursor")
+
+ # reset frame colours
+ args.window.setProperty("FrameColours", "tl:FFFFFFFF tr:FFFFFFFF bl:FFFFFFFF br:FFFFFFFF")
+ return True
+
+def handleDragDropped(args):
+
+ # change to normal mouse cursor
+ cegui.System.getSingleton().setDefaultMouseCursor("TaharezLook", "MouseArrow")
+ # set frame colour and add image to frame static grid
+ args.window.setProperty("FrameColours", "tl:FFFFFFFF tr:FFFFFFFF bl:FFFFFFFF br:FFFFFFFF")
+ args.window.addChildWindow(args.dragDropItem)
+ args.dragDropItem.position = CEGUI.UVector2(cegui_reldim (CONTAINER_POS), cegui_reldim (CONTAINER_POS))
+ args.dragDropItem.setSize(CEGUI.UVector2(cegui_reldim(CONTAINER_SIZE), cegui_reldim(CONTAINER_SIZE)))
+ print "UserData:",args.window.getUserData()
+
+ return True
+
+def onMouseEnters(args):
+ #print "You have Mouse Entery"
+ # change to mouse move cursor
+ cegui.System.getSingleton().setDefaultMouseCursor("TaharezLook", "MouseMoveCursor")
+
+
+def onMouseLeaves(args):
+ #print "You have Mouse Left"
+ # change to mouse move cursor
+ cegui.System.getSingleton().setDefaultMouseCursor("TaharezLook", "MouseArrow")
+
+
+
+
+class GEUIApplication(SampleFramework.Application):
+
+ def __init__(self):
+ SampleFramework.Application.__init__(self)
+ self.guiRenderer=0
+ self.system =0
+ self.img = [] # static images for frames
+ self.ec = [] # events for each static image
+ self.ec1 = 0 # events for icon image change mouse cursor
+ self.ec2 = 0
+ self.keep=[]
+
+ def _createGUI(self):
+
+ # initiaslise CEGUI Renderer
+ self.guiRenderer = cegui.OgreCEGUIRenderer(self.renderWindow,ogre.RenderQueueGroupID.RENDER_QUEUE_OVERLAY, False, 3000, self.sceneManager)
+ self.system = cegui.System(self.guiRenderer)
+ cegui.Logger.getSingleton().loggingLevel = cegui.Insane
+
+ # load TaharezLook scheme
+ cegui.SchemeManager.getSingleton().loadScheme("TaharezLookSkin.scheme")
+ self.system.setDefaultMouseCursor("TaharezLook", "MouseArrow")
+
+ # default layout
+ sheet = cegui.WindowManager.getSingleton().createWindow("DefaultWindow", "root_wnd")
+ self.system.setGUISheet (sheet)
+
+ # control colours
+ blue = cegui.colour(0.0, 0.0, 1.0, 0.5)
+ red = cegui.colour(1.0, 0.0, 0.0, 0.5)
+ green = cegui.colour(0.0, 1.0, 0.0, 1.0)
+ blue_back = cegui.colour(0.0, 0.0, 1.0, 1.0)
+ red_back = cegui.colour(1.0, 0.0, 0.0, 1.0)
+
+
+ # setup tooltip
+ self.system.setDefaultTooltip("TaharezLook/Tooltip" )
+ tip = self.system.getDefaultTooltip()
+
+ # displayTime
+ # the number of seconds the tooltip should be displayed for before it automatically
+ # de-activates itself.
+ # 0 indicates that the tooltip should never timesout and auto-deactivate.
+ # hoverTime
+ # the number of seconds the mouse should hover stationary over the target window
+ # before the tooltip gets activated.
+ # fadeTime
+ # number of seconds that should be taken to fade the tooltip into and out of
+ # visibility.
+
+ #tip.displayTime=0.80
+ tip.hoverTime = 0.10
+ tip.fadeTime=1.0
+
+ # an edit box
+ editBox = CreateControl("TaharezLook/MultiLineEditbox", "an edit control",sheet,[0.10,0.80],[0.80,0.80],'')
+ editBox.text="The above static text control was created using UDIM"
+ editBox.text+="UDIM is the new 'unified' co-ord system replacement for relative/absolute coords"
+ editBox.text+=" The basic concept is UDIM(scale,offset) where:"
+ editBox.text+=" scale is the relative component usually 0.0 to 1.0"
+ editBox.text+=" offset is the absolute component in pixels "
+ editBox.readOnly=True
+
+ # create static text box UDIM
+ stat =cegui.WindowManager.getSingleton().createWindow("TaharezLook/StaticText", "Label")
+ stat.windowHeight=cegui.UDim(0.05,0) # %window parents height,offset pixels parent
+ stat.windowWidth=cegui.UDim(0.80,0) # %window parents width, offset pixels parent
+ stat.windowXPosition = cegui.UDim(0.10,0) # %position parent window width,offset pixels parent
+ stat.windowYPosition = cegui.UDim(0.05,0) # %position parent window height,offset pixels parent
+ stat.text = "Drag Above Icon to different cells in frame window"
+ img = cegui.ImagesetManager.getSingleton().getImageset("TaharezLook").getImage("ListboxSelectionBrush")
+ stat.backgroundImage = img
+ stat.backgroundColours = cegui.ColourRect(red,red,red,red) #colrect
+ stat.textColours = (1.0,1.0,1.0) # white
+ stat.frameColours = blue
+ stat.horizontalFormatting=cegui.Centred # LeftAligned
+
+ #sheet.addChildWindow(stat)
+
+ # creates first frame window
+ frs=cegui.WindowManager.getSingleton().createWindow("TaharezLook/FrameWindow", "Rucksack")
+ frs.setPosition (CEGUI.UVector2(cegui_reldim (0.03), cegui_reldim (0.05)))
+ frs.setSize(CEGUI.UVector2(cegui_reldim(0.45), cegui_reldim(0.6)))
+ frs.text = "Test Frame"
+ sheet.addChildWindow(frs)
+
+ # creates second frame window
+ feq=cegui.WindowManager.getSingleton().createWindow("TaharezLook/FrameWindow", "Equipped Items")
+ feq.setPosition (CEGUI.UVector2(cegui_reldim (0.5), cegui_reldim (0.05)))
+ feq.setSize(CEGUI.UVector2(cegui_reldim(0.45), cegui_reldim(0.6)))
+ feq.text = "Test Frame 2"
+ sheet.addChildWindow(feq)
+
+ # add a number of 'slots' to each frame window
+ # the slots will act as targets for drag/drop
+ # the slots ust normal StaticText widgets with the relevant event handlers attached
+
+ # create 4x4 staic image grid for each frame
+ cols = 4
+ rows = 4
+ deltax=1.0/cols
+ deltay=1.0/rows
+
+ for x in [frs,feq]:
+ for xp in range(cols):
+ for yp in range(rows):
+ name = "Slot" + str(xp) + str(yp) + x.name.c_str()
+ self.keep.append(name)
+ c = CreateControl("TaharezLook/StaticImage",name,x,[xp*deltax,yp*deltay],[deltax,deltay],'Image1',1)
+ c.setUserData (name)
+ print "UserData:",c.getUserData()
+
+ self.img.append(c)
+
+ # create events for each slot
+ for slot in self.img:
+ self.ec.append(slot.subscribeEvent(slot.EventDragDropItemEnters, handleDragEnter,""))
+ self.ec.append(slot.subscribeEvent(slot.EventDragDropItemLeaves, handleDragLeave,""))
+ self.ec.append(slot.subscribeEvent(slot.EventDragDropItemDropped, handleDragDropped,""))
+
+
+ # create a drag/drop container
+ item=cegui.WindowManager.getSingleton().createWindow("DragContainer", "theItem")
+ item.position = CEGUI.UVector2(cegui_reldim (CONTAINER_POS), cegui_reldim (CONTAINER_POS))
+ item.setSize(CEGUI.UVector2(cegui_reldim(CONTAINER_SIZE), cegui_reldim(CONTAINER_SIZE)))
+
+
+
+ # create a static iamge as drag container's contents and parent to drag container
+ itemIcon=cegui.WindowManager.getSingleton().createWindow("TaharezLook/StaticImage", "theContainer")
+ itemIcon.setPosition (CEGUI.UVector2(cegui_reldim (0.0), cegui_reldim (0.0)) )
+ itemIcon.setSize(CEGUI.UVector2(cegui_reldim(1.0), cegui_reldim(1.0)))
+
+ # set image
+ itemIcon.setProperty("Image", "set:TaharezLook image:CloseButtonNormal")
+ # disable to allow inputs to pass through.
+ itemIcon.disable
+ itemIcon.tooltipText ="Drag Me"
+
+ # add itemIcon to drag drop container
+ item.addChildWindow(itemIcon)
+
+ # events to change mouse cursor
+ self.ec1= item.subscribeEvent(item.EventMouseEnters,onMouseEnters, "")
+ self.ec2= item.subscribeEvent(item.EventMouseLeaves,onMouseLeaves, "")
+
+ # set starting slot for the item
+ startslot=self.img[0]
+ startslot.addChildWindow(item)
+
+
+ def _createScene(self):
+ sceneManager = self.sceneManager
+ sceneManager.ambientLight = ogre.ColourValue(0.25, 0.25, 0.25)
+ self._createGUI()
+
+
+ def _createCamera(self):
+ self.camera = self.sceneManager.createCamera("PlayerCam")
+ self.camera.nearClipDistance = 5
+
+ def _createFrameListener(self):
+ self.frameListener = CEGUIFrameListener(self.renderWindow, self.camera, self.sceneManager)
+ self.root.addFrameListener(self.frameListener)
+ self.frameListener.showDebugOverlay(True)
+
+ def __del__(self):
+ "Clear variables, this is needed to ensure the correct order of deletion"
+ del self.camera
+ del self.sceneManager
+ del self.frameListener
+ del self.system
+ del self.guiRenderer
+ del self.root
+ del self.renderWindow
+
+class CEGUIFrameListener(GuiFrameListener):
+
+ def __init__(self, renderWindow, camera, sceneManager):
+ GuiFrameListener.__init__(self, renderWindow, camera, sceneManager)
+
+ self.keepRendering = True # whether to continue rendering or not
+
+ def frameStarted(self, evt):
+ # injectTimePulse needed when using tooltips
+ cegui.System.getSingleton().injectTimePulse( evt.timeSinceLastFrame)
+ return GuiFrameListener.frameStarted(self,evt)
+
+
+
+if __name__ == '__main__':
+ try:
+ ta = GEUIApplication()
+ ta.go()
+ except ogre.OgreException, e:
+ print e
Added: trunk/python-ogre/demos/cegui/Demo_CEGUI_Facial.py
===================================================================
--- trunk/python-ogre/demos/cegui/Demo_CEGUI_Facial.py (rev 0)
+++ trunk/python-ogre/demos/cegui/Demo_CEGUI_Facial.py 2007-10-03 06:30:20 UTC (rev 407)
@@ -0,0 +1,220 @@
+# ===============================================================
+#
+# TODO:
+#
+#
+# ===============================================================
+
+
+import ogre.renderer.OGRE as ogre
+import ogre.gui.CEGUI as cegui
+import SampleFramework
+
+from CEGUI_framework import *
+
+SI_COUNT=18
+poseIndexes=[ 1, 2, 3, 4, 7, 8, 6, 5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
+
+scrollbarNames = [ "Facial/Happy_Scroll",
+ "Facial/Sad_Scroll",
+ "Facial/Angry_Scroll",
+ "Facial/A_Scroll",
+ "Facial/E_Scroll",
+ "Facial/I_Scroll",
+ "Facial/O_Scroll",
+ "Facial/U_Scroll",
+ "Facial/C_Scroll",
+ "Facial/W_Scroll",
+ "Facial/M_Scroll",
+ "Facial/L_Scroll",
+ "Facial/F_Scroll",
+ "Facial/T_Scroll",
+ "Facial/P_Scroll",
+ "Facial/R_Scroll",
+ "Facial/S_Scroll",
+ "Facial/TH_Scroll"]
+
+class ScrollbarIndex:
+ SI_HAPPY,SI_SAD , SI_ANGRY ,SI_A , SI_E ,SI_I ,SI_O ,SI_U ,SI_C ,SI_W ,SI_M ,SI_L ,SI_F, SI_T ,SI_P ,SI_R ,SI_S ,SI_TH , SI_COUNT =range(19)
+
+
+class CEGUIFrameListener(GuiFrameListener):
+
+ def __init__(self, renderWindow, camera, sceneManager,speakAnimState,speakManualState,manualKeyFrame):
+
+ self.scrollbars=[0]*18
+ self.connections = []
+
+ self.mPlayAnimation = False
+ self.speakAnimState = speakAnimState
+ self.speakManualState = speakManualState
+ self.manualKeyFrame = manualKeyFrame
+
+ GuiFrameListener.__init__(self, renderWindow, camera, sceneManager)
+ self._setupGUI()
+ self._setupConnections()
+ self.MenuMode = True
+
+
+ def _setupGUI(self):
+
+ # get main cegui anim window
+ wmgr = cegui.WindowManager.getSingleton()
+ main = wmgr.getWindow("FacialDemo")
+ main.enabled=True
+ # set up radio button event handling, initial state (Animation)
+ self.mPlayAnimation = True
+
+ def _setupConnections(self):
+
+ wmgr = cegui.WindowManager.getSingleton()
+ # set up anim slider event handling, initial state (disabled)
+ for i in xrange(0,SI_COUNT):
+ self.scrollbars[i] = wmgr.getWindow(scrollbarNames[i])
+ self.connections.append(self.scrollbars[i].subscribeEvent(self.scrollbars[i].EventThumbTrackEnded, self, "handleScrollChanged"))
+ self.scrollbars[i].setEnabled(False)
+ btn = wmgr.getWindow("Facial/Radio/Play")
+ btn.selected=True
+ self.connections.append(btn.subscribeEvent(btn.EventSelectStateChanged, self, "handleRadioChanged"))
+
+ def frameStarted(self, evt):
+ ok = GuiFrameListener.frameStarted(self,evt)
+ if ok:
+ self.speakAnimState.addTime(evt.timeSinceLastFrame)
+ return ok
+
+ # scrollbars event handler
+ def handleScrollChanged(self,args):
+ if (not self.mPlayAnimation):
+ #Alter the animation
+ name = args.window.name.c_str() ## Note that you need to extract the string
+ #Find which pose was changed
+ for i in xrange(0,SI_COUNT):
+ if (scrollbarNames[i] == name):
+ break
+ if (i != SI_COUNT):
+ #Update the pose
+ self.manualKeyFrame.updatePoseReference(
+ poseIndexes[i], self.scrollbars[i].getScrollPosition() ) #scrollPosition)
+ #Dirty animation state since we're fudging this manually
+ self.speakManualState.getParent()._notifyDirty()
+
+ return True
+
+ # radio button event handler switch betweens manual/auto animation
+ def handleRadioChanged(self,args):
+ self.mPlayAnimation = not self.mPlayAnimation
+ self.speakAnimState.setEnabled(self.mPlayAnimation)
+ self.speakManualState.setEnabled(not self.mPlayAnimation)
+ for i in xrange(0,SI_COUNT):
+ self.scrollbars[i].setEnabled(not self.mPlayAnimation)
+ return True
+
+
+class FacialAnimationApplication(SampleFramework.Application):
+
+ def __init__(self):
+ SampleFramework.Application.__init__(self)
+ self.guiRenderer=0
+ self.system =0
+ self.speakAnimState = None
+ self.manualAnimState = None
+ self.manualKeyFrame = None
+ self.mesh = None
+
+
+ def _createGUI(self):
+
+ # Initiaslise CEGUI Renderer
+ self.guiRenderer = cegui.OgreCEGUIRenderer(self.renderWindow,ogre.RENDER_QUEUE_OVERLAY, False, 3000, self.sceneManager)
+
+ # create cegui system and log name facial.log
+ self.system = cegui.System(self.guiRenderer)
+ cegui.Logger.getSingleton().loggingLevel = cegui.Insane
+
+ # Load Cegui Scheme
+ cegui.SchemeManager.getSingleton().loadScheme("TaharezLookSkin.scheme")
+ self.system.setDefaultMouseCursor("TaharezLook", "MouseArrow")
+ self.system.setDefaultFont("BlueHighway-12")
+
+ # Load Layout
+ sheet = cegui.WindowManager.getSingleton().loadWindowLayout("facial.layout")
+ self.system.setGUISheet (sheet)
+ sheet.enabled=True
+
+ def _createScene(self):
+ sceneManager = self.sceneManager
+ sceneManager.ambientLight = ogre.ColourValue(0.25, 0.25, 0.25)
+
+ # Create a light
+ l = sceneManager.createLight("MainLight")
+ #Accept default settings: point light, white diffuse, just set position
+ #NB I could attach the light to a SceneNode if I wanted it to move automatically with
+ #other objects, but I don't
+ l.setPosition(ogre.Vector3(20,80,50))
+ l.setDiffuseColour(ogre.ColourValue(1.0, 1.0, 1.0))
+
+ # create a light
+ l = sceneManager.createLight("MainLight2")
+ l.setPosition (ogre.Vector3(-120,-80,-50))
+ l.setDiffuseColour(ogre.ColourValue(0.7, 0.7, 0.6))
+
+
+ # pre-load the mesh so that we can tweak it with a manual animation
+ mesh = ogre.MeshManager.getSingleton().load("facial.mesh", 'General')
+ anim = mesh.createAnimation("manual", 0)
+ track = anim.createVertexTrack(4, ogre.VAT_POSE)
+ self.manualKeyFrame = track.createVertexPoseKeyFrame(0)
+ manualKeyFrame=self.manualKeyFrame
+
+ # create pose references, initially zero
+ for i in xrange(0,SI_COUNT):
+ manualKeyFrame.addPoseReference(poseIndexes[i], 0.0)
+
+ head = sceneManager.createEntity("Head", "facial.mesh")
+ self.speakAnimState = head.getAnimationState("Speak")
+ self.speakAnimState.enabled=True
+ self.manualAnimState = head.getAnimationState("manual")
+ self.manualAnimState.timePosition=0
+
+ headNode = sceneManager.rootSceneNode.createChildSceneNode()
+ headNode.attachObject(head)
+
+ self.camera.setPosition( ogre.Vector3(-20, 50, 150) )
+ self.camera.lookAt( ogre.Vector3(0,35,0) )
+
+ self._createGUI()
+
+
+
+ def _createCamera(self):
+ self.camera = self.sceneManager.createCamera("PlayerCam")
+ self.camera.setNearClipDistance(5)
+
+ def _createFrameListener(self):
+ self.frameListener = CEGUIFrameListener(self.renderWindow, self.camera, self.sceneManager,
+ self.speakAnimState,self.manualAnimState,self.manualKeyFrame)
+ self.root.addFrameListener(self.frameListener)
+ self.frameListener.showDebugOverlay(True)
+
+ def __del__(self):
+ "Clear variables, this is needed to ensure the correct order of deletion"
+ del self.camera
+ del self.sceneManager
+ del self.frameListener
+ del self.system
+ del self.guiRenderer
+ del self.root
+ del self.renderWindow
+
+
+if __name__ == '__main__':
+ try:
+ ta = FacialAnimationApplication()
+ ta.go()
+ except ogre.OgreException, e:
+ print e
+
+
+
+
Added: trunk/python-ogre/demos/cegui/Demo_CEGUI_Gui.py
===================================================================
--- trunk/python-ogre/demos/cegui/Demo_CEGUI_Gui.py (rev 0)
+++ trunk/python-ogre/demos/cegui/Demo_CEGUI_Gui.py 2007-10-03 06:30:20 UTC (rev 407)
@@ -0,0 +1,375 @@
+# /*
+# -----------------------------------------------------------------------------
+# This source file is part of OGRE
+# (Object-oriented Graphics Rendering Engine)
+# For the latest info, see http:##www.ogre3d.org/
+
+# Copyright (c) 2000-2006 Torus Knot Software Ltd
+# Also see acknowledgements in Readme.html
+
+# You may use self sample code for anything you like, it is not covered by the
+# LGPL like the rest of the engine.
+# -----------------------------------------------------------------------------
+# */
+
+import ogre.renderer.OGRE as ogre
+import ogre.gui.CEGUI as CEGUI
+import ogre.io.OIS as OIS
+import SampleFramework
+
+import sys, exceptions, random
+
+from CEGUI_framework import * ## we need the OIS version of the framelistener etc
+
+class GuiApplication ( SampleFramework.Application ):
+
+ def __init__(self):
+ SampleFramework.Application.__init__(self)
+ self.GUIRenderer=0
+ self.GUIsystem =0
+ self.EditorGuiSheet=0
+ self.DescriptionMap={}
+ self.ListItems = [] # used to hold objects that in C++ code would be created with "new"
+
+ # used for adding individual objects
+ self.windowNumber = 0
+ self.vertScrollNumber = 0
+ self.horizScrollNumber = 0
+ self.textScrollNumber = 0
+ self.siCounter = 0
+ self.rttCounter=0
+
+ self.DescriptionMap[ "Demo8"] = "The main containing panel"
+ self.DescriptionMap[ "Demo8/Window1"] = "A test window"
+ self.DescriptionMap[ "Demo8/Window1/Listbox"] = "A list box"
+ self.DescriptionMap[ "Demo8/Window1/Controls/Red"] = "A colour slider"
+ self.DescriptionMap[ "Demo8/Window1/Controls/Green"] = "A colour slider"
+ self.DescriptionMap[ "Demo8/Window1/Controls/Blue"] = "A colour slider"
+ self.DescriptionMap[ "Demo8/Window1/Controls/ColourSample"] = "The colour that will be used for the selection when added to the list"
+ self.DescriptionMap[ "Demo8/Window1/Controls/Editbox"] = "An edit box self text will be added to the list"
+ self.DescriptionMap[ "Demo8/Window1/Controls/Add"] = "Adds the text to the list"
+ self.DescriptionMap[ "Demo8/Window1/Controls/ins1"] = "Some static text"
+
+ def __del__(self):
+ ##
+ ## important that things get deleted int he right order
+ ##
+
+ ## we could delete self.listitems however it should happen automagically
+ del self.camera
+ del self.sceneManager
+ del self.frameListener
+ try:
+ if self.EditorGuiSheet:
+ CEGUI.WindowManager.getSingleton().destroyWindow(self.EditorGuiSheet)
+ except:
+ pass
+ del self.GUIsystem
+ del self.GUIRenderer
+ del self.root
+ del self.renderWindow
+
+ ## Just override the mandatory create scene method
+ def _createScene(self):
+ sceneManager = self.sceneManager
+ sceneManager.ambientLight = ogre.ColourValue(0.5, 0.5, 0.5)
+
+ ## Create a skydome
+ self.sceneManager.setSkyDome(True, "Examples/CloudySky", 5, 8)
+
+ ## Create a light
+ l = self.sceneManager.createLight("MainLight")
+ ## Accept default settings: point light, white diffuse, just set position
+ ## NB I could attach the light to a SceneNode if I wanted it to move automatically with
+ ## other objects, but I don't
+ l.setPosition(20,80,50)
+
+ ## setup GUI system
+ self.GUIRenderer = CEGUI.OgreCEGUIRenderer(self.renderWindow,
+ ogre.RENDER_QUEUE_OVERLAY, False, 3000, self.sceneManager)
+
+ self.GUIsystem = CEGUI.System(self.GUIRenderer)
+
+ logger = CEGUI.Logger.getSingleton()
+ level = CEGUI.Informative
+ logger.setLoggingLevel(level)
+
+ ogreHead = self.sceneManager.createEntity("Head", "ogrehead.mesh")
+
+ headNode = self.sceneManager.getRootSceneNode().createChildSceneNode()
+ headNode.attachObject(ogreHead)
+
+
+ ## Setup Render To Texture for preview window
+ rttTex = self.root.getRenderSystem().createRenderTexture( "RttTex", 512, 512, ogre.TextureType.TEX_TYPE_2D, ogre.PixelFormat.PF_R8G8B8 )
+ rttCam = self.sceneManager.createCamera("RttCam")
+ camNode = self.sceneManager.getRootSceneNode().createChildSceneNode("rttCamNode")
+ camNode.attachObject(rttCam)
+ rttCam.setPosition(0,0,200)
+ ##rttCam.setVisible(True)
+ v = rttTex.addViewport( rttCam )
+ v.setOverlaysEnabled(False)
+ v.setClearEveryFrame( True )
+ v.setBackgroundColour( ogre.ColourValue.Black )
+
+
+ ## Retrieve CEGUI texture for the RTT
+ rttTexture = self.GUIRenderer.createTexture( "RttTex")
+
+ rttImageSet = CEGUI.ImagesetManager.getSingleton().createImageset("RttImageset", rttTexture)
+
+ rttImageSet.defineImage( "RttImage",
+ CEGUI.Point(0.0, 0.0),
+ CEGUI.Size(rttTexture.getWidth(), rttTexture.getHeight()),
+ CEGUI.Point(0.0,0.0))
+
+ ## load scheme and set up defaults
+ CEGUI.SchemeManager.getSingleton().loadScheme("TaharezLookSkin.scheme")
+ self.GUIsystem.setDefaultMouseCursor("TaharezLook", "MouseArrow")
+ self.GUIsystem.setDefaultFont( "BlueHighway-12")
+
+ sheet = CEGUI.WindowManager.getSingleton().loadWindowLayout("ogregui.layout")
+ self.GUIsystem.setGUISheet(sheet)
+
+#
+## note that copies are not made for combo/list boxes so need to keep each item around
+## hence the use of the array and setting AutoDelete to False...
+#
+ objectComboBox = CEGUI.WindowManager.getSingleton().getWindow("OgreGuiDemo/TabCtrl/Page2/ObjectTypeList")
+ function = 0
+ for title in ["FrameWindow", "Horizontal Scrollbar","Vertical Scrollbar",
+ "StaticText","StaticImage","Render to Texture"] :
+ item = CEGUI.ListboxTextItem( title, function ) # create the item
+ item.AutoDeleted = False # ensure Python is in control of it's "deletion"
+ objectComboBox.addItem(item) # add the item to the combo list
+ self.ListItems.append(item) # ensure the item stays around until we decide to delete it
+ function += 1 # a simple flag so we know what to create when this is selected
+
+ self.setupEventHandlers()
+
+
+ ## Create new frame listener
+ def _createFrameListener(self):
+ self.frameListener = GuiFrameListener(self.renderWindow, self.camera, self.GUIRenderer) #self.sceneManager)
+ self.frameListener.MenuMode = True # this stop the camera moving with the mouse cursor..
+
+ self.root.addFrameListener(self.frameListener)
+ self.frameListener.showDebugOverlay(False)
+
+
+ def setupEventHandlers(self):
+ wmgr = CEGUI.WindowManager.getSingleton()
+
+ wmgr.getWindow( "OgreGuiDemo/TabCtrl/Page1/QuitButton").subscribeEvent(
+ CEGUI.PushButton.EventClicked, self, "handleQuit")
+ wmgr.getWindow( "OgreGuiDemo/TabCtrl/Page1/NewButton").subscribeEvent(
+ CEGUI.PushButton.EventClicked, self, "handleNew")
+ wmgr.getWindow( "OgreGuiDemo/TabCtrl/Page1/LoadButton").subscribeEvent(
+ CEGUI.PushButton.EventClicked, self, "handleLoad")
+ wmgr.getWindow("OgreGuiDemo/TabCtrl/Page2/ObjectTypeList").subscribeEvent(
+ CEGUI.Combobox.EventListSelectionAccepted, self, "handleObjectSelection");
+
+
+ def setupEnterExitEvents(self, win):
+ win.subscribeEvent(
+ CEGUI.Window.EventMouseEnters,
+ self, "handleMouseEnters")
+ win.subscribeEvent(
+ CEGUI.Window.EventMouseLeaves,
+ self, "handleMouseLeaves")
+ for i in range (win.getChildCount()):
+ child = win.getChildAtIdx(i)
+ self.setupEnterExitEvents(child)
+
+ def setupLoadedLayoutHandlers(self):
+ wmgr = CEGUI.WindowManager.getSingleton()
+ self.Red = wmgr.getWindow( "Demo8/Window1/Controls/Red")
+ self.Green = wmgr.getWindow( "Demo8/Window1/Controls/Green")
+ self.Blue = wmgr.getWindow( "Demo8/Window1/Controls/Blue")
+ self.Preview = wmgr.getWindow( "Demo8/Window1/Controls/ColourSample")
+ self.List = wmgr.getWindow( "Demo8/Window1/Listbox")
+ self.EditBox = wmgr.getWindow( "Demo8/Window1/Controls/Editbox")
+ self.Tip = wmgr.getWindow( "Demo8/Window2/Tips")
+
+ self.Red.subscribeEvent(
+ CEGUI.Scrollbar.EventScrollPositionChanged,
+ self, "handleColourChanged")
+ self.Green.subscribeEvent(
+ CEGUI.Scrollbar.EventScrollPositionChanged,
+ self, "handleColourChanged")
+ self.Blue.subscribeEvent(
+ CEGUI.Scrollbar.EventScrollPositionChanged,
+ self, "handleColourChanged")
+ wmgr.getWindow( "Demo8/Window1/Controls/Add").subscribeEvent(
+ CEGUI.PushButton.EventClicked,
+ self, "handleAdd")
+
+ root = wmgr.getWindow("Demo8")
+ self.setupEnterExitEvents(root)
+
+ def createRttGuiObject(self):
+ guiObjectName = "NewRttImage" + str(self.rttCounter)
+
+ rttImageSet = CEGUI.ImagesetManager.getSingleton().getImageset("RttImageset")
+ si = CEGUI.WindowManager.getSingleton().createWindow( "TaharezLook/StaticImage", guiObjectName)
+ si.setSize(CEGUI.UVector2( CEGUI.UDim(0.5, 0), CEGUI.UDim(0.4, 0)))
+ si.setProperty("Image", CEGUI.PropertyHelper.imageToString(rttImageSet.getImage( "RttImage")))
+ self.rttCounter += 1
+ return si
+
+ def createStaticImageObject(self):
+ guiObjectName = "NewStaticImage" + str(self.siCounter)
+
+ imageSet = CEGUI.ImagesetManager.getSingleton().getImageset("TaharezLook")
+
+ si = CEGUI.WindowManager.getSingleton().createWindow( "TaharezLook/StaticImage", guiObjectName)
+ si.setSize(CEGUI.UVector2( CEGUI.UDim(0.2, 0), CEGUI.UDim(0.2, 0)))
+ si.setProperty("Image", CEGUI.PropertyHelper.imageToString(imageSet.getImage( "ClientBrush")))
+
+ self.siCounter+=1
+ return si
+
+ def handleQuit(self, e):
+ self.frameListener.requestShutdown()
+ return True
+
+
+ def handleNew(self, e):
+ if self.EditorGuiSheet:
+ CEGUI.WindowManager.getSingleton().destroyWindow(self.EditorGuiSheet)
+
+ self.EditorGuiSheet = CEGUI.WindowManager.getSingleton().createWindow("DefaultGUISheet", "NewLayout")
+
+ editorWindow = CEGUI.WindowManager.getSingleton().getWindow( "OgreGuiDemo2/MainWindow")
+ editorWindow.addChildWindow( self.EditorGuiSheet )
+
+ ## Test with the Euro symbol
+ special=CEGUI.String()
+ special.assign(8364)
+ #special=CEGUI.String(num=1,code_point=8364) # this makes a single char string with the unicode character
+
+ ## and let's check some appending etc..
+ f=CEGUI.String("Start")
+ temp=f.append(special,0,1) ## append the unicode string
+ end = CEGUI.String("End")
+ temp=temp.append(end,0,3)
+ editorWindow.text=temp
+
+ ## Now for utf8
+ utf8String = "\xc4\x8d Special 'C' showing utf8 capabilities \xc2\xa9 Python-Ogre\xe2\x84\xa2"
+ cs = CEGUI.String()
+ cs.assign ( utf8String )
+ editorWindow.text=cs
+
+ return True
+
+
+ def handleLoad(self, e):
+ if(self.EditorGuiSheet):
+ CEGUI.WindowManager.getSingleton().destroyWindow(self.EditorGuiSheet)
+
+ self.EditorGuiSheet = CEGUI.WindowManager.getSingleton().loadWindowLayout("cegui8.layout")
+ self.setupLoadedLayoutHandlers()
+
+ editorWindow = CEGUI.WindowManager.getSingleton().getWindow( "OgreGuiDemo2/MainWindow")
+ editorWindow.addChildWindow(self.EditorGuiSheet)
+
+ return True
+
+
+ def handleObjectSelection(self, e):
+ guiObjectName =""
+
+ ## Set a random position to place self object.
+ posX = 0.7 * random.random() #(0.0, 0.7)
+ posY = 0.6 * random.random() + 0.1 #(0.1, 0.7)
+ item = e.window.getSelectedItem() #CEGUI.DoIt(e)
+
+ editorWindow = CEGUI.WindowManager.getSingleton().getWindow( "OgreGuiDemo2/MainWindow")
+
+ id = item.getID()
+ if id == 0:
+ guiObjectName = "NewWindow" + str(self.windowNumber)
+ window = CEGUI.WindowManager.getSingleton().createWindow( "TaharezLook/FrameWindow", guiObjectName)
+ window.setSize(CEGUI.UVector2(CEGUI.UDim(0.3,0), CEGUI.UDim(0.3,0)))
+ window.setText( "New Window")
+ self.windowNumber+=1
+ elif id == 1:
+ guiObjectName = "NewHorizScroll" + str(self.horizScrollNumber)
+ window = CEGUI.WindowManager.getSingleton().createWindow( "TaharezLook/HorizontalScrollbar", guiObjectName)
+ window.setSize(CEGUI.UVector2(CEGUI.UDim(0.75,0), CEGUI.UDim(0.03,0)))
+ self.horizScrollNumber+=1
+ elif id == 2:
+ guiObjectName = "NewVertScroll" + str(self.vertScrollNumber)
+ window = CEGUI.WindowManager.getSingleton().createWindow( "TaharezLook/VerticalScrollbar", guiObjectName)
+ window.setSize(CEGUI.UVector2(CEGUI.UDim(0.03,0), CEGUI.UDim(0.75,0)))
+ self.vertScrollNumber+=1
+ elif id == 3:
+ guiObjectName = "NewStaticText" + str(self.textScrollNumber)
+ window = CEGUI.WindowManager.getSingleton().createWindow( "TaharezLook/StaticText", guiObjectName)
+ window.setSize(CEGUI.UVector2(CEGUI.UDim(0.25,0), CEGUI.UDim(0.1,0)))
+ window.setText( "Example static text")
+ self.textScrollNumber+=1
+ elif id == 4:
+ window = self.createStaticImageObject()
+ elif id == 5:
+ window = self.createRttGuiObject()
+
+ editorWindow.addChildWindow(window)
+ window.setPosition(CEGUI.UVector2(CEGUI.UDim(posX, 0), CEGUI.UDim(posY, 0)))
+
+ return True
+
+ def handleColourChanged( self, e):
+ self.Preview.setProperty("ImageColours",
+ CEGUI.PropertyHelper.colourToString(CEGUI.colour(
+ self.Red.getScrollPosition() / 255.0,
+ self.Green.getScrollPosition() / 255.0,
+ self.Blue.getScrollPosition() / 255.0)))
+
+ return True
+
+ def handleAdd(self, e):
+ listboxitem = CEGUI.ListboxTextItem (self.EditBox.getText())
+ listboxitem.AutoDeleted = False # Fix to ensure that items are not deleted by the CEGUI system
+ listboxitem.setSelectionBrushImage("TaharezLook", "ListboxSelectionBrush")
+ if self.List.getItemCount() == 0:
+ listboxitem.setSelected( True )
+ else:
+ listboxitem.setSelected( False )
+ listboxitem.setSelectionColours(
+ CEGUI.PropertyHelper.stringToColourRect(self.Preview.getProperty("ImageColours")))
+ self.List.addItem(listboxitem)
+ self.ListItems.append(listboxitem) # we need to keep the listitems around for the list box to work
+ return True
+
+ def handleMouseEnters(self, e):
+ name = e.window.getName().c_str()
+ try:
+ self.Tip.setText( self.DescriptionMap[ name ])
+ except:
+ self.Tip.setText( "" )
+ return True
+
+ def handleMouseLeaves(self, e):
+ self.Tip.setText( "")
+ return True
+
+def TestonKeyDown( e):
+
+ ##find the static box
+ print"KEYDOWN"
+ print e
+ print dir(e)
+
+ return True
+
+if __name__ == '__main__':
+ try:
+ ta = GuiApplication()
+ ta.go()
+ except ogre.OgreException, e:
+ print e
+
+
+
Added: trunk/python-ogre/demos/cegui/Demo_CEGUI_NewGui.py
===================================================================
--- trunk/python-ogre/demos/cegui/Demo_CEGUI_NewGui.py (rev 0)
+++ trunk/python-ogre/demos/cegui/Demo_CEGUI_NewGui.py 2007-10-03 06:30:20 UTC (rev 407)
@@ -0,0 +1,431 @@
+# /*
+# -----------------------------------------------------------------------------
+# This source file is part of OGRE
+# (Object-oriented Graphics Rendering Engine)
+# For the latest info, see http:##www.ogre3d.org/
+
+# Copyright (c) 2000-2006 Torus Knot Software Ltd
+# Also see acknowledgements in Readme.html
+
+# You may use self sample code for anything you like, it is not covered by the
+# LGPL like the rest of the engine.
+# -----------------------------------------------------------------------------
+#
+
+###
+### This is a blank template to make it easier to convert existing samples
+###
+
+import ogre.renderer.OGRE as ogre
+import ogre.gui.CEGUI as CEGUI
+import ogre.io.OIS as OIS
+import SampleFramework
+
+import sys, exceptions, random
+
+from CEGUI_framework import * ## we need the OIS version of the framelistener etc
+
+def cegui_reldim ( x ) :
+ return CEGUI.UDim((x),0)
+
+class GuiApplication ( SampleFramework.Application ):
+
+ def __init__(self):
+ SampleFramework.Application.__init__(self)
+ self.GUIRenderer=0
+ self.GUIsystem =0
+ self.EditorGuiSheet=0
+
+ def __del__(self):
+ ##
+ ## important that things get deleted int he right order
+ ##
+ del self.camera
+ del self.sceneManager
+ del self.frameListener
+ try:
+ if self.EditorGuiSheet:
+ CEGUI.WindowManager.getSingleton().destroyWindow(self.EditorGuiSheet)
+ except:
+ pass
+ del self.GUIsystem
+ del self.GUIRenderer
+ del self.root
+ del self.renderWindow
+
+
+ ## Just override the mandatory create scene method
+ def _createScene(self):
+ sceneManager = self.sceneManager
+ sceneManager.ambientLight = ogre.ColourValue(0.5, 0.5, 0.5)
+
+ ## Create a skydome
+ self.sceneManager.setSkyDome(True, "Examples/CloudySky", 5, 8)
+
+ ## Create a light
+ l = self.sceneManager.createLight("MainLight")
+ l.setPosition(20,80,50)
+
+# ## set the default resource groups to be used
+# CEGUI.Imageset.setDefaultResourceGroup("imagesets")
+# CEGUI.Font.setDefaultResourceGroup("fonts")
+# CEGUI.Scheme.setDefaultResourceGroup("schemes")
+# CEGUI.WidgetLookManager.setDefaultResourceGroup("looknfeels")
+# CEGUI.WindowManager.setDefaultResourceGroup("layouts")
+# CEGUI.ScriptModule.setDefaultResourceGroup("lua_scripts")
+#
+ ## setup GUI system
+ self.GUIRenderer = CEGUI.OgreCEGUIRenderer(self.renderWindow,
+ ogre.RENDER_QUEUE_OVERLAY, False, 3000, self.sceneManager)
+
+
+ self.GUIsystem = CEGUI.System(self.GUIRenderer)
+
+ logger = CEGUI.Logger.getSingleton()
+ logger.setLoggingLevel( CEGUI.Informative )
+
+ # we will make extensive use of the WindowManager.
+ winMgr = CEGUI.WindowManager.getSingleton()
+
+ ## load scheme and set up defaults
+ CEGUI.SchemeManager.getSingleton().loadScheme("TaharezLookSkin.scheme")
+ self.GUIsystem.setDefaultMouseCursor("TaharezLook", "MouseArrow")
+ #CEGUI.FontManager.getSingleton().createFont("Commonwealth-10.font")
+
+ ## load an image to use as a background
+ CEGUI.ImagesetManager.getSingleton().createImagesetFromImageFile("BackgroundImage", "ogregui.tga")
+
+ ## here we will use a StaticImage as the root, then we can use it to place a background image
+ background = winMgr.createWindow("TaharezLook/StaticImage", "background_wnd")
+ ## set position and size
+ background.setPosition(CEGUI.UVector2(cegui_reldim(0), cegui_reldim( 0)))
+ background.setSize(CEGUI.UVector2(cegui_reldim(1), cegui_reldim( 1)))
+ ## disable frame and standard background
+ background.setProperty("FrameEnabled", "false")
+ background.setProperty("BackgroundEnabled", "false")
+ ## set the background image
+ background.setProperty("Image", "set:BackgroundImage image:full_image")
+ ## install this as the root GUI sheet
+ CEGUI.System.getSingleton().setGUISheet(background)
+
+ ## now we create a DefaultWindow which we will attach all the widgets to. We could
+ ## have attached them to the background StaticImage, though we want to be a bit tricky
+ ## since we do not wish the background to be faded by the slider - so we create this
+ ## container window so we can affect all the other widgets, but leave the background
+ ## unchanged.
+ sheet = winMgr.createWindow("DefaultWindow", "root_wnd")
+ ## attach this to the 'real' root
+ background.addChildWindow(sheet)
+
+ ##
+ ## widget initialisation
+ ##
+ ## quit button
+ btn = winMgr.createWindow("TaharezLook/Button", "QuitButton")
+ sheet.addChildWindow(btn)
+ btn.setText("Quit!")
+ btn.setPosition(CEGUI.UVector2(cegui_reldim(0.035), cegui_reldim( 0.0)))
+ btn.setSize(CEGUI.UVector2(cegui_reldim(0.1), cegui_reldim( 0.036)))
+
+ btn.subscribeEvent(CEGUI.PushButton.EventClicked, self, "handleQuit")
+ btn.setAlwaysOnTop(True)
+
+ ## Alpha-slider
+ slider = winMgr.createWindow("TaharezLook/Slider", "my slider")
+ sheet.addChildWindow(slider)
+ slider.setPosition(CEGUI.UVector2(cegui_reldim(0.136), cegui_reldim( 0.0)))
+ slider.setSize(CEGUI.UVector2(cegui_reldim(0.02), cegui_reldim( 0.075)))
+ slider.setAlwaysOnTop(True)
+ ## here we disable inherited alpha so that we will always be able to see the slider
+ slider.setInheritsAlpha(False)
+ ## set up slider config
+ slider.setCurrentValue(1.0)
+ slider.setClickStep(0.1)
+ ## subscribe handler that will process slider position changes.
+ slider.subscribeEvent(CEGUI.Slider.EventValueChanged, sliderHandler, "")
+
+ ## big scroll bar
+ vscb = winMgr.createWindow("TaharezLook/LargeVerticalScrollbar", "Vert Scroll 1")
+ sheet.addChildWindow(vscb)
+ vscb.setPosition(CEGUI.UVector2(cegui_reldim(0.0), cegui_reldim( 0.0)))
+ vscb.setMinSize(CEGUI.UVector2(cegui_reldim(0.01), cegui_reldim( 0.01)))
+ vscb.setMaxSize(CEGUI.UVector2(cegui_reldim(1.0), cegui_reldim( 1.0)))
+ vscb.setSize(CEGUI.UVector2(cegui_reldim(0.035), cegui_reldim( 0.83)))
+ vscb.setDocumentSize(100)
+ vscb.setPageSize(5)
+ vscb.setStepSize(1)
+ vscb.setAlwaysOnTop(True)
+
+ ## mini vert scroll bar
+ mvsb = winMgr.createWindow("TaharezLook/VerticalScrollbar", "MiniVertScroll 1")
+ sheet...
[truncated message content] |