Advertisement
Guest User

Untitled

a guest
Mar 27th, 2015
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 17.75 KB | None | 0 0
  1. =====================
  2. keymappings_glfw3.py
  3. =====================
  4. import sys
  5. import glfw
  6. import PyCEGUI
  7.  
  8. ## our keyboard mappings
  9. KEYMAPPINGS = {
  10.     glfw.GLFW_KEY_UNKNOWN       : PyCEGUI.Key.Unknown,
  11.     glfw.GLFW_KEY_SPACE         : PyCEGUI.Key.Space,
  12.     glfw.GLFW_KEY_APOSTROPHE    : PyCEGUI.Key.Apostrophe,
  13.     glfw.GLFW_KEY_COMMA         : PyCEGUI.Key.Comma,
  14.     glfw.GLFW_KEY_MINUS         : PyCEGUI.Key.Minus,
  15.     glfw.GLFW_KEY_PERIOD        : PyCEGUI.Key.Period,
  16.     glfw.GLFW_KEY_SLASH         : PyCEGUI.Key.Slash,
  17.     glfw.GLFW_KEY_0             : PyCEGUI.Key.Zero,
  18.     glfw.GLFW_KEY_1             : PyCEGUI.Key.One,
  19.     glfw.GLFW_KEY_2             : PyCEGUI.Key.Two,
  20.     glfw.GLFW_KEY_3             : PyCEGUI.Key.Three,
  21.     glfw.GLFW_KEY_4             : PyCEGUI.Key.Four,
  22.     glfw.GLFW_KEY_5             : PyCEGUI.Key.Five,
  23.     glfw.GLFW_KEY_6             : PyCEGUI.Key.Six,
  24.     glfw.GLFW_KEY_7             : PyCEGUI.Key.Seven,
  25.     glfw.GLFW_KEY_8             : PyCEGUI.Key.Eight,
  26.     glfw.GLFW_KEY_9             : PyCEGUI.Key.Nine,
  27.     glfw.GLFW_KEY_SEMICOLON     : PyCEGUI.Key.Semicolon,
  28.     glfw.GLFW_KEY_EQUAL         : PyCEGUI.Key.Equals,
  29.     glfw.GLFW_KEY_A             : PyCEGUI.Key.A,
  30.     glfw.GLFW_KEY_B             : PyCEGUI.Key.B,
  31.     glfw.GLFW_KEY_C             : PyCEGUI.Key.C,
  32.     glfw.GLFW_KEY_D             : PyCEGUI.Key.D,
  33.     glfw.GLFW_KEY_E             : PyCEGUI.Key.E,
  34.     glfw.GLFW_KEY_F             : PyCEGUI.Key.F,
  35.     glfw.GLFW_KEY_G             : PyCEGUI.Key.G,
  36.     glfw.GLFW_KEY_H             : PyCEGUI.Key.H,
  37.     glfw.GLFW_KEY_I             : PyCEGUI.Key.I,
  38.     glfw.GLFW_KEY_J             : PyCEGUI.Key.J,
  39.     glfw.GLFW_KEY_K             : PyCEGUI.Key.K,
  40.     glfw.GLFW_KEY_L             : PyCEGUI.Key.L,
  41.     glfw.GLFW_KEY_M             : PyCEGUI.Key.M,
  42.     glfw.GLFW_KEY_N             : PyCEGUI.Key.N,
  43.     glfw.GLFW_KEY_O             : PyCEGUI.Key.O,
  44.     glfw.GLFW_KEY_P             : PyCEGUI.Key.P,
  45.     glfw.GLFW_KEY_Q             : PyCEGUI.Key.Q,
  46.     glfw.GLFW_KEY_R             : PyCEGUI.Key.R,
  47.     glfw.GLFW_KEY_S             : PyCEGUI.Key.S,
  48.     glfw.GLFW_KEY_T             : PyCEGUI.Key.T,
  49.     glfw.GLFW_KEY_U             : PyCEGUI.Key.U,
  50.     glfw.GLFW_KEY_V             : PyCEGUI.Key.V,
  51.     glfw.GLFW_KEY_W             : PyCEGUI.Key.W,
  52.     glfw.GLFW_KEY_X             : PyCEGUI.Key.X,
  53.     glfw.GLFW_KEY_Y             : PyCEGUI.Key.Y,
  54.     glfw.GLFW_KEY_Z             : PyCEGUI.Key.Z,
  55.     glfw.GLFW_KEY_LEFT_BRACKET  : PyCEGUI.Key.LeftBracket,
  56.     glfw.GLFW_KEY_BACKSLASH     : PyCEGUI.Key.Backslash,
  57.     glfw.GLFW_KEY_RIGHT_BRACKET : PyCEGUI.Key.RightBracket,
  58.     glfw.GLFW_KEY_GRAVE_ACCENT  : PyCEGUI.Key.Grave,
  59.     glfw.GLFW_KEY_WORLD_1       : PyCEGUI.Key.Unknown,
  60.     glfw.GLFW_KEY_WORLD_2       : PyCEGUI.Key.Unknown,
  61.  
  62.     glfw.GLFW_KEY_ESCAPE        : PyCEGUI.Key.Escape,
  63.     glfw.GLFW_KEY_ENTER         : PyCEGUI.Key.Return,
  64.     glfw.GLFW_KEY_TAB           : PyCEGUI.Key.Tab,
  65.     glfw.GLFW_KEY_BACKSPACE     : PyCEGUI.Key.Backspace,
  66.     glfw.GLFW_KEY_INSERT        : PyCEGUI.Key.Insert,
  67.     glfw.GLFW_KEY_DELETE        : PyCEGUI.Key.Delete,
  68.     glfw.GLFW_KEY_RIGHT         : PyCEGUI.Key.ArrowRight,
  69.     glfw.GLFW_KEY_LEFT          : PyCEGUI.Key.ArrowLeft,
  70.     glfw.GLFW_KEY_DOWN          : PyCEGUI.Key.ArrowDown,
  71.     glfw.GLFW_KEY_UP            : PyCEGUI.Key.ArrowUp,
  72.     glfw.GLFW_KEY_PAGE_UP       : PyCEGUI.Key.PageUp,
  73.     glfw.GLFW_KEY_PAGE_DOWN     : PyCEGUI.Key.PageDown,
  74.     glfw.GLFW_KEY_HOME          : PyCEGUI.Key.Home,
  75.     glfw.GLFW_KEY_END           : PyCEGUI.Key.End,
  76.     glfw.GLFW_KEY_CAPS_LOCK     : PyCEGUI.Key.Capital,
  77.     glfw.GLFW_KEY_SCROLL_LOCK   : PyCEGUI.Key.ScrollLock,
  78.     glfw.GLFW_KEY_NUM_LOCK      : PyCEGUI.Key.NumLock,
  79.     glfw.GLFW_KEY_PRINT_SCREEN  : PyCEGUI.Key.SysRq,
  80.     glfw.GLFW_KEY_PAUSE         : PyCEGUI.Key.Pause,
  81.     glfw.GLFW_KEY_F1            : PyCEGUI.Key.F1,
  82.     glfw.GLFW_KEY_F2            : PyCEGUI.Key.F2,
  83.     glfw.GLFW_KEY_F3            : PyCEGUI.Key.F3,
  84.     glfw.GLFW_KEY_F4            : PyCEGUI.Key.F4,
  85.     glfw.GLFW_KEY_F5            : PyCEGUI.Key.F5,
  86.     glfw.GLFW_KEY_F6            : PyCEGUI.Key.F6,
  87.     glfw.GLFW_KEY_F7            : PyCEGUI.Key.F7,
  88.     glfw.GLFW_KEY_F8            : PyCEGUI.Key.F8,
  89.     glfw.GLFW_KEY_F9            : PyCEGUI.Key.F9,
  90.     glfw.GLFW_KEY_F10           : PyCEGUI.Key.F10,
  91.     glfw.GLFW_KEY_F11           : PyCEGUI.Key.F11,
  92.     glfw.GLFW_KEY_F12           : PyCEGUI.Key.F12,
  93.     glfw.GLFW_KEY_F13           : PyCEGUI.Key.F13,
  94.     glfw.GLFW_KEY_F14           : PyCEGUI.Key.F14,
  95.     glfw.GLFW_KEY_F15           : PyCEGUI.Key.F15,
  96.     glfw.GLFW_KEY_F16           : PyCEGUI.Key.Unknown,
  97.     glfw.GLFW_KEY_F17           : PyCEGUI.Key.Unknown,
  98.     glfw.GLFW_KEY_F18           : PyCEGUI.Key.Unknown,
  99.     glfw.GLFW_KEY_F19           : PyCEGUI.Key.Unknown,
  100.     glfw.GLFW_KEY_F20           : PyCEGUI.Key.Unknown,
  101.     glfw.GLFW_KEY_F21           : PyCEGUI.Key.Unknown,
  102.     glfw.GLFW_KEY_F22           : PyCEGUI.Key.Unknown,
  103.     glfw.GLFW_KEY_F23           : PyCEGUI.Key.Unknown,
  104.     glfw.GLFW_KEY_F24           : PyCEGUI.Key.Unknown,
  105.     glfw.GLFW_KEY_F25           : PyCEGUI.Key.Unknown,
  106.     glfw.GLFW_KEY_KP_0          : PyCEGUI.Key.Numpad0,
  107.     glfw.GLFW_KEY_KP_1          : PyCEGUI.Key.Numpad1,
  108.     glfw.GLFW_KEY_KP_2          : PyCEGUI.Key.Numpad2,
  109.     glfw.GLFW_KEY_KP_3          : PyCEGUI.Key.Numpad3,
  110.     glfw.GLFW_KEY_KP_4          : PyCEGUI.Key.Numpad4,
  111.     glfw.GLFW_KEY_KP_5          : PyCEGUI.Key.Numpad5,
  112.     glfw.GLFW_KEY_KP_6          : PyCEGUI.Key.Numpad6,
  113.     glfw.GLFW_KEY_KP_7          : PyCEGUI.Key.Numpad7,
  114.     glfw.GLFW_KEY_KP_8          : PyCEGUI.Key.Numpad8,
  115.     glfw.GLFW_KEY_KP_9          : PyCEGUI.Key.Numpad9,
  116.     glfw.GLFW_KEY_KP_DECIMAL    : PyCEGUI.Key.Decimal,
  117.     glfw.GLFW_KEY_KP_DIVIDE     : PyCEGUI.Key.Divide,
  118.     glfw.GLFW_KEY_KP_MULTIPLY   : PyCEGUI.Key.Multiply,
  119.     glfw.GLFW_KEY_KP_SUBTRACT   : PyCEGUI.Key.Subtract,
  120.     glfw.GLFW_KEY_KP_ADD        : PyCEGUI.Key.Add,
  121.     glfw.GLFW_KEY_KP_ENTER      : PyCEGUI.Key.NumpadEnter,
  122.     glfw.GLFW_KEY_KP_EQUAL      : PyCEGUI.Key.NumpadEquals,    
  123.     glfw.GLFW_KEY_LEFT_SHIFT    : PyCEGUI.Key.LeftShift,
  124.     glfw.GLFW_KEY_LEFT_CONTROL  : PyCEGUI.Key.LeftControl,
  125.     glfw.GLFW_KEY_LEFT_ALT      : PyCEGUI.Key.LeftAlt,
  126.     glfw.GLFW_KEY_LEFT_SUPER    : PyCEGUI.Key.LeftWindows,
  127.     glfw.GLFW_KEY_RIGHT_SHIFT   : PyCEGUI.Key.RightShift,
  128.     glfw.GLFW_KEY_RIGHT_CONTROL : PyCEGUI.Key.RightControl,
  129.     glfw.GLFW_KEY_RIGHT_ALT     : PyCEGUI.Key.RightAlt,
  130.     glfw.GLFW_KEY_RIGHT_SUPER   : PyCEGUI.Key.RightWindows,
  131.     glfw.GLFW_KEY_MENU          : PyCEGUI.Key.AppMenu,
  132.     glfw.GLFW_KEY_LAST          : PyCEGUI.Key.AppMenu
  133. }
  134.  
  135.  
  136. =============
  137. cegui_glfw3.py
  138. ==============
  139.  # -- coding: utf-8 --
  140.  
  141. import glfw
  142. import OpenGL.GL as PyGL
  143. import sys, os , site
  144.  
  145. ## set the path of your PyCEGUI* modules
  146. for _path in [os.path.join(s,'cegui-0.8') for s in site.getsitepackages()]:
  147.     print _path
  148.     sys.path.insert(0, _path)
  149. sys.path.insert(0, "/media/sdb5/python-ogre-cegui/cegui-0.8/lib")
  150.  
  151. ## set the path to our resource files
  152. CEGUI_PATH = "/media/sdb5/Libraries/OGRE/sdk/v1-9/share/cegui-0/"
  153.  
  154. ## import our PyCEGUI and out glfw3 to cegui key mappings
  155. import PyCEGUI
  156. import PyCEGUIOpenGLRenderer
  157. from keymappings_glfw3 import *
  158.  
  159. def ConvertMouseButton(button):
  160.     ''' Convert Mouse Buttons to CEGUI '''
  161.     if (button == glfw.GLFW_MOUSE_BUTTON_RIGHT):
  162.         return PyCEGUI.RightButton
  163.     elif (button == glfw.GLFW_MOUSE_BUTTON_LEFT):
  164.         return PyCEGUI.LeftButton
  165.     elif (button == glfw.GLFW_MOUSE_BUTTON_MIDDLE):
  166.         return PyCEGUI.MiddleButton
  167.     else:
  168.         return PyCEGUI.LeftButton
  169.  
  170. class Application(object):
  171.     def __init__(self):
  172.  
  173.         # Initialize glfw
  174.         if not glfw.glfwInit():
  175.             print (" Error : glfw failed to initialize")
  176.             sys.exit (glfw.EXIT_FAILURE)
  177.  
  178.         ceguiGL3Renderer = True
  179.         if ceguiGL3Renderer:
  180.             glfw.glfwWindowHint(glfw.GLFW_CONTEXT_VERSION_MAJOR, 3)
  181.             glfw.glfwWindowHint(glfw.GLFW_CONTEXT_VERSION_MINOR, 2)
  182.             glfw.glfwWindowHint(glfw.GLFW_OPENGL_FORWARD_COMPAT, PyGL.GL_TRUE)
  183.             glfw.glfwWindowHint(glfw.GLFW_OPENGL_PROFILE, glfw.GLFW_OPENGL_CORE_PROFILE)
  184.         else:
  185.             glfw.glfwWindowHint(glfw.GLFW_CONTEXT_VERSION_MAJOR, 2)
  186.             glfw.glfwWindowHint(glfw.GLFW_CONTEXT_VERSION_MINOR, 1)
  187.             glfw.glfwWindowHint(glfw.GLFW_OPENGL_PROFILE, glfw.GLFW_OPENGL_ANY_PROFILE)
  188.  
  189.         # our window hints
  190.         ## http://www.glfw.org/docs/latest/window.html
  191.         ## set our framebuffer related hints
  192.         glfw.glfwWindowHint(glfw.GLFW_DEPTH_BITS, 24)
  193.         glfw.glfwWindowHint(glfw.GLFW_STENCIL_BITS, 8)
  194.  
  195.         glfw.glfwWindowHint(glfw.GLFW_FOCUSED, True)
  196.  
  197.         fullScreen = False
  198.         # create window
  199.         if (not fullScreen):
  200.             glfw_window = glfw.glfwCreateWindow(1024, 768, "PyCEGUI glfw3 Demo", None, None)
  201.         else:
  202.             glfw_window = glfw.glfwCreateWindow(1024, 768, "PyCEGUI glfw3 Demo", glfw.glfwGetPrimaryMonitor(), None)
  203.  
  204.         # check window created
  205.         if not glfw_window:
  206.             print (" Error : glfw failed to create a window")
  207.             glfw.glfwTerminate()
  208.             sys.exit()
  209.         self.glfw_window = glfw_window
  210.  
  211.         glfw.glfwMakeContextCurrent(glfw_window)
  212.  
  213.         self.showglfwInfo()
  214.  
  215.         ## this does nothing on linux
  216.         glfw.glfwSwapInterval(0)
  217.  
  218.         glfw.glfwSetInputMode(glfw_window, glfw.GLFW_CURSOR, glfw.GLFW_CURSOR_HIDDEN)
  219.  
  220.         # call backs
  221.         glfw.glfwSetKeyCallback(             glfw_window,  self.on_key)
  222.         glfw.glfwSetMouseButtonCallback(     glfw_window,  self.on_mouse)
  223.         glfw.glfwSetCursorPosCallback(       glfw_window,  self.on_move)
  224.         glfw.glfwSetWindowSizeCallback(      glfw_window,  self.on_resize)
  225.         glfw.glfwSetCharCallback(            glfw_window,  self.on_char_callback)
  226.         glfw.glfwSetFramebufferSizeCallback( glfw_window,  self.on_framebuffer_size_callback)
  227.  
  228.  
  229.         # initialise our CEGUI renderer
  230.         ctx_major      = glfw.glfwGetWindowAttrib(glfw_window, glfw.GLFW_CONTEXT_VERSION_MAJOR)
  231.         ctx_minor      = glfw.glfwGetWindowAttrib(glfw_window, glfw.GLFW_CONTEXT_VERSION_MINOR)
  232.         forward_compat = glfw.glfwGetWindowAttrib(glfw_window, glfw.GLFW_OPENGL_FORWARD_COMPAT)
  233.  
  234.         if (not ceguiGL3Renderer):
  235.             PyCEGUIOpenGLRenderer.OpenGLRenderer.bootstrapSystem()
  236.         else :
  237.             PyCEGUIOpenGLRenderer.OpenGL3Renderer.bootstrapSystem()
  238.  
  239.  
  240.         # initialise PyCEGUI and resources
  241.         rp = PyCEGUI.System.getSingleton().getResourceProvider()
  242.      
  243.         rp.setResourceGroupDirectory("schemes",    CEGUI_PATH + "schemes")
  244.         rp.setResourceGroupDirectory("imagesets",  CEGUI_PATH + "imagesets")
  245.         rp.setResourceGroupDirectory("fonts",      CEGUI_PATH + "fonts")
  246.         rp.setResourceGroupDirectory("layouts",    CEGUI_PATH + "layouts")
  247.         rp.setResourceGroupDirectory("looknfeels", CEGUI_PATH + "looknfeel")
  248.         rp.setResourceGroupDirectory("schemas",    CEGUI_PATH + "xml_schemas")
  249.      
  250.         PyCEGUI.ImageManager.setImagesetDefaultResourceGroup("imagesets")
  251.         PyCEGUI.Font.setDefaultResourceGroup("fonts")
  252.         PyCEGUI.Scheme.setDefaultResourceGroup("schemes")
  253.         PyCEGUI.WidgetLookManager.setDefaultResourceGroup("looknfeels")
  254.         PyCEGUI.WindowManager.setDefaultResourceGroup("layouts")
  255.  
  256.         parser = PyCEGUI.System.getSingleton().getXMLParser()
  257.         if parser.isPropertyPresent("SchemaDefaultResourceGroup"):
  258.             parser.setProperty("SchemaDefaultResourceGroup", "schemas")    
  259.  
  260.         # Load schemes
  261.         PyCEGUI.SchemeManager.getSingleton().createFromFile("TaharezLook.scheme")
  262.         PyCEGUI.SchemeManager.getSingleton().createFromFile("WindowsLook.scheme")
  263.         PyCEGUI.System.getSingleton().getDefaultGUIContext().getMouseCursor().setDefaultImage("TaharezLook/MouseArrow")
  264.      
  265.         # set root window
  266.         root = PyCEGUI.WindowManager.getSingleton().createWindow("DefaultWindow", "background_wnd");
  267.         root.setArea( PyCEGUI.UVector2(PyCEGUI.UDim(0.0, 0),PyCEGUI.UDim(0.0, 0)) ,PyCEGUI.USize(PyCEGUI.UDim(1.0, 0),PyCEGUI.UDim(1.0, 0)))
  268.         PyCEGUI.System.getSingleton().getDefaultGUIContext().setRootWindow(root)
  269.  
  270.         # load a layout
  271.         layout = PyCEGUI.WindowManager.getSingleton().loadLayoutFromFile("TextDemo.layout")
  272.         root.addChild(layout.getChild('TextDemo'))
  273.         self.edit = root.getChild('TextDemo/MultiLineGroup/editMulti')
  274.  
  275.         # create label for our FPS
  276.         self.labelFPS = PyCEGUI.WindowManager.getSingleton().createWindow("TaharezLook/Label", "FPSLabel")
  277.         root.addChild(self.labelFPS)
  278.  
  279.         # create hello button
  280.         button = PyCEGUI.WindowManager.getSingleton().createWindow("TaharezLook/Button", "HelloButton")
  281.         button.setArea( PyCEGUI.UVector2(PyCEGUI.UDim(.50, 0),PyCEGUI.UDim(.92, 0)) ,PyCEGUI.USize(PyCEGUI.UDim(0.3, 0),PyCEGUI.UDim(0.05, 0)))
  282.         button.setText("Hello")
  283.         root.addChild(button)
  284.         button.subscribeEvent(PyCEGUI.PushButton.EventClicked, self.OnbuttonClicked)
  285.  
  286.         # init simple timing
  287.         self.previous_time = glfw.glfwGetTime()
  288.         self.current_time  = self.previous_time
  289.  
  290.  
  291.     def showglfwInfo(self):
  292.         ctx_major      = glfw.glfwGetWindowAttrib(self.glfw_window, glfw.GLFW_CONTEXT_VERSION_MAJOR)
  293.         ctx_minor      = glfw.glfwGetWindowAttrib(self.glfw_window, glfw.GLFW_CONTEXT_VERSION_MINOR)
  294.         forward_compat = glfw.glfwGetWindowAttrib(self.glfw_window, glfw.GLFW_OPENGL_FORWARD_COMPAT)
  295.         print "Created Window for OpenGL version %d.%d " % ( ctx_major, ctx_major )
  296.         if ( ctx_major >=3 and forward_compat):
  297.             print "Context is forward compatible, you can't use OpenGL 2.x commands"
  298.         fwidth,fheight = glfw.glfwGetFramebufferSize(self.glfw_window)
  299.         width, height =  glfw.glfwGetWindowSize(self.glfw_window)
  300.  
  301.         print "Framebuffer size %dx%d Window size %dx%d " % (fwidth,fheight, width,height)
  302.  
  303.     def OnbuttonClicked(self, args):
  304.         self.edit.setText(self.edit.getText() + "You Clicked")
  305.         return
  306.  
  307.     def cleanUp(self):
  308.         ''' shutdown glfw and CEGUI '''
  309.         PyCEGUIOpenGLRenderer.OpenGLRenderer.destroySystem()
  310.         glfw.glfwTerminate()
  311.  
  312.     def updateGL(self):
  313.         ''' glfw GL updates '''
  314.         pass
  315.    
  316.     def updateCEGUI(self, elapsed):
  317.         ''' CEGUI updates '''
  318.         #focused = glfw.glfwGetWindowAttrib(glfw_window, glfw.GLFW_CONTEXT_VERSION_MAJOR)
  319.  
  320.         if (PyCEGUI.System.getSingleton()):
  321.             PyCEGUI.System.getSingleton().injectTimePulse(elapsed)
  322.             PyCEGUI.System.getSingleton().renderAllGUIContexts()
  323.             self.labelFPS.setText("FPS : %s" %(str(int(1.0/elapsed))))
  324.  
  325.     def mainLoop(self):
  326.         ''' Loop until glfw window is closed '''
  327.  
  328.         while not glfw.glfwWindowShouldClose(self.glfw_window):
  329.  
  330.             PyGL.glClear(PyGL.GL_COLOR_BUFFER_BIT)
  331.  
  332.             # update timing
  333.             self.current_time = glfw.glfwGetTime()
  334.             elapsed = self.current_time - self.previous_time
  335.             self.previous_time = self.current_time
  336.  
  337.             # update GL/CEGUI
  338.             self.updateGL()
  339.             self.updateCEGUI(elapsed)
  340.  
  341.             # Swap front and back buffers
  342.             glfw.glfwSwapBuffers(self.glfw_window)
  343.  
  344.             # Handle glfw events
  345.             glfw.glfwPollEvents()
  346.  
  347.  
  348.     def on_framebuffer_size_callback(self,window,width,height):
  349.         ''' the framebuffer on high-DPI monitors may differ from the screen co-ords, so notify display size change here '''
  350.         PyGL.glViewport(0, 0, width, height)
  351.         if ( PyCEGUI.System.getSingleton()):
  352.             PyCEGUI.System.getSingleton().notifyDisplaySizeChanged(PyCEGUI.Sizef(float(width), float(height) ))
  353.  
  354.     def on_move(self, window, x,y):
  355.         ''' pass glfw mouse moves to CEGUI '''
  356.         if ( PyCEGUI.System.getSingleton()):
  357.             PyCEGUI.System.getSingleton().getDefaultGUIContext().injectMousePosition(x, y)
  358.  
  359.     def on_resize(self, window, width,height):
  360.         ''' resize glfw viewport and CEGUI display '''
  361.         PyGL.glViewport(0, 0, width, height)
  362.         if ( PyCEGUI.System.getSingleton()):
  363.             PyCEGUI.System.getSingleton().notifyDisplaySizeChanged(PyCEGUI.Sizef(float(width), float(height) ))
  364.  
  365.     def on_mouse(self, window, button, action, mods):
  366.         ''' pass glfw mouse press events to CEGUI '''
  367.         if ( PyCEGUI.System.getSingleton()):
  368.             context = PyCEGUI.System.getSingleton().getDefaultGUIContext()
  369.             if (action == glfw.GLFW_PRESS):
  370.                 context.injectMouseButtonDown( ConvertMouseButton(button) )
  371.             if (action == glfw.GLFW_RELEASE):
  372.                 context.injectMouseButtonUp( ConvertMouseButton(button) )
  373.  
  374.     def on_char_callback(self, window, code):
  375.         ''' Unicode character callback function to CEGUI '''
  376.         PyCEGUI.System.getSingleton().getDefaultGUIContext().injectChar(code)
  377.  
  378.     def on_key(self, window, key, scancode, action, mods):
  379.         ''' pass keypress events to CEGUI '''
  380.         if PyCEGUI.System.getSingleton():
  381.             cegui_key = KEYMAPPINGS[key]
  382.             if (not cegui_key==PyCEGUI.Key.Unknown):
  383.                 if (action == glfw.GLFW_PRESS):
  384.                     PyCEGUI.System.getSingleton().getDefaultGUIContext().injectKeyDown(PyCEGUI.Key.Scan(cegui_key))
  385.                 if (action == glfw.GLFW_RELEASE):
  386.                     PyCEGUI.System.getSingleton().getDefaultGUIContext().injectKeyUp(PyCEGUI.Key.Scan(cegui_key))
  387.  
  388.         ## exit
  389.         if key == glfw.GLFW_KEY_ESCAPE and action == glfw.GLFW_PRESS:
  390.             glfw.glfwSetWindowShouldClose(window,1)
  391.  
  392.  
  393. if __name__ == '__main__':
  394.     app = Application()
  395.     app.mainLoop()
  396.     app.cleanUp()
  397.     del app
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement