Package fife :: Package extensions :: Package cegui :: Module ceguibasicapplication
[hide private]
[frames] | no frames]

Source Code for Module fife.extensions.cegui.ceguibasicapplication

  1  # -*- coding: utf-8 -*- 
  2   
  3  # #################################################################### 
  4  #  Copyright (C) 2005-2019 by the FIFE team 
  5  #  http://www.fifengine.net 
  6  #  This file is part of FIFE. 
  7  # 
  8  #  FIFE is free software; you can redistribute it and/or 
  9  #  modify it under the terms of the GNU Lesser General Public 
 10  #  License as published by the Free Software Foundation; either 
 11  #  version 2.1 of the License, or (at your option) any later version. 
 12  # 
 13  #  This library is distributed in the hope that it will be useful, 
 14  #  but WITHOUT ANY WARRANTY; without even the implied warranty of 
 15  #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
 16  #  Lesser General Public License for more details. 
 17  # 
 18  #  You should have received a copy of the GNU Lesser General Public 
 19  #  License along with this library; if not, write to the 
 20  #  Free Software Foundation, Inc., 
 21  #  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA 
 22  # #################################################################### 
 23   
 24  """ 
 25  The basic application and main loop. 
 26   
 27  See the L{ApplicationBase} documentation. 
 28  """ 
 29   
 30  from builtins import map 
 31  from fife import fife 
 32  from fife.extensions.basicapplication import ApplicationBase 
 33   
 34  import PyCEGUI 
 35   
36 -class CEGUIEventListener(fife.IKeyListener, fife.ICommandListener):
37 """ 38 Default, rudimentary event listener. 39 40 Will cause the application to quit on pressing ESC. 41 """
42 - def __init__(self, app):
43 self.app = app 44 self.engine = app.engine 45 eventmanager = self.engine.getEventManager() 46 #eventmanager.setNonConsumableKeys([fife.Key.ESCAPE]) 47 fife.IKeyListener.__init__(self) 48 eventmanager.addKeyListener(self) 49 fife.ICommandListener.__init__(self) 50 eventmanager.addCommandListener(self) 51 self.quitrequested = False 52 self.debuggeractive = False
53
54 - def keyPressed(self, evt):
55 keyval = evt.getKey().getValue() 56 57 if keyval == fife.Key.ESCAPE: 58 self.app.quit()
59
60 - def keyReleased(self, evt):
61 pass
62
63 - def onCommand(self, command):
64 if command.getCommandType() == fife.CMD_QUIT_GAME: 65 self.quitrequested = True 66 command.consume()
67 68 DEFAULT_GUI_DIR = "gui/" 69
70 -class CEGUIApplicationBase(ApplicationBase):
71 - def __init__(self, setting=None):
72 super(CEGUIApplicationBase, self).__init__(setting) 73 74 self._initGuiManager() 75 self._loadCEGuiSettings()
76
77 - def _initGuiManager(self):
78 settings = self.engine.getSettings() 79 80 major_v, minor_v = list(map(int, PyCEGUI.Version__.split('.')[:2])) 81 82 #For CEGUI versions lower than 0.8.0 we use the old CEGuiManager 83 if major_v == 0 and minor_v <= 7: 84 guimanager = fife.CEGuiManager() 85 else: 86 guimanager = fife.CEGuiManager() 87 88 #transfer ownership to the engine 89 guimanager.thisown = 0 90 91 self.guimanager = guimanager 92 self.engine.setGuiManager(self.guimanager) 93 self.engine.getEventManager().addSdlEventListener(self.guimanager)
94
95 - def _loadCEGuiSettings(self):
96 self._loadResourcePaths()
97
98 - def _loadResourcePaths(self):
99 100 resourceprovider = PyCEGUI.System.getSingleton().getResourceProvider() 101 102 major_v, minor_v = list(map(int, PyCEGUI.Version__.split('.')[:2])) 103 if major_v == 0 and minor_v <= 7: 104 resourcetypemap = { "schemes" : PyCEGUI.Scheme.setDefaultResourceGroup, 105 "imagesets" : PyCEGUI.Imageset.setDefaultResourceGroup, 106 "fonts" : PyCEGUI.Font.setDefaultResourceGroup, 107 "layouts" : PyCEGUI.WindowManager.setDefaultResourceGroup, 108 "looksnfeels" : PyCEGUI.WidgetLookManager.setDefaultResourceGroup, 109 } 110 else: 111 resourcetypemap = { "schemes" : PyCEGUI.Scheme.setDefaultResourceGroup, 112 "imagesets" : PyCEGUI.ImageManager.setImagesetDefaultResourceGroup, 113 "fonts" : PyCEGUI.Font.setDefaultResourceGroup, 114 "layouts" : PyCEGUI.WindowManager.setDefaultResourceGroup, 115 "looksnfeels" : PyCEGUI.WidgetLookManager.setDefaultResourceGroup, 116 } 117 118 119 if not self._setting: 120 for restype, res_setfunc in resourcetypemap.items(): 121 resourceprovider.setResourceGroupDirectory(restype, DEFAULT_GUI_DIR + restype) 122 res_setfunc(restype) 123 else: 124 for restype, res_setfunc in resourcetypemap.items(): 125 path = self._setting.get("CEGUI", restype) 126 if path: 127 resourceprovider.setResourceGroupDirectory(restype, path) 128 res_setfunc(restype) 129 else: 130 #set default path 131 resourceprovider.setResourceGroupDirectory(restype, DEFAULT_GUI_DIR + restype) 132 res_setfunc(restype) 133 134 parser = PyCEGUI.System.getSingleton().getXMLParser() 135 if parser.isPropertyPresent("SchemaDefaultResourceGroup"): 136 path = self._setting.get("CEGUI", "schemas") 137 if path: 138 rp.setResourceGroupDirectory("schemas", path) 139 else: 140 rp.setResourceGroupDirectory("schemas", DEFAULT_GUI_DIR + "schemas") 141 142 parser.setProperty("SchemaDefaultResourceGroup", "schemas")
143 144
145 - def createListener(self):
146 self._listener = CEGUIEventListener(self) 147 return self._listener
148