# HG changeset patch # User prock@33b003aa-7bff-0310-803a-e67f0ece8222 # Date 1274211451 0 # Node ID ee65aa32345798e25df7d2738b89fea809424b43 # Parent 0196c83c72701b31f3cecdd74fa726a47102fb5d Updated the ApplicationBase settings to use the new and improved fife_setting extension. I was able to remove all the setting related functions from the demos and editor so that the ApplicationBase now takes care of all the FIFE related settings. diff -r 0196c83c7270 -r ee65aa323457 demos/rio_de_hola/run.py --- a/demos/rio_de_hola/run.py Tue May 18 16:01:35 2010 +0000 +++ b/demos/rio_de_hola/run.py Tue May 18 19:37:31 2010 +0000 @@ -117,55 +117,12 @@ class IslandDemo(ApplicationBase): def __init__(self): - super(IslandDemo,self).__init__() + super(IslandDemo,self).__init__(TDS) pychan.init(self.engine, debug=TDS.get("FIFE", "PychanDebug")) self.world = world.World(self.engine) self.listener = ApplicationListener(self.engine, self.world) self.world.load(str(TDS.get("rio", "MapFile"))) - def loadSettings(self): - """ - Load the settings from a python file and load them into the engine. - Called in the ApplicationBase constructor. - """ - - self._setting = TDS - - glyphDft = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,!?-+/():;%&`'*#=[]\\\"" - engineSetting = self.engine.getSettings() - engineSetting.setDefaultFontGlyphs(self._setting.get("FIFE", "FontGlyphs", glyphDft)) - engineSetting.setDefaultFontPath(self._setting.get("FIFE", "Font", "fonts/FreeSans.ttf")) - engineSetting.setDefaultFontSize(self._setting.get("FIFE", "DefaultFontSize", 12)) - engineSetting.setBitsPerPixel(self._setting.get("FIFE", "BitsPerPixel", 0)) - engineSetting.setInitialVolume(self._setting.get("FIFE", "InitialVolume", 5.0)) - engineSetting.setSDLRemoveFakeAlpha(self._setting.get("FIFE", "SDLRemoveFakeAlpha", 1)) - engineSetting.setScreenWidth(self._setting.get("FIFE", "ScreenWidth", 1024)) - engineSetting.setScreenHeight(self._setting.get("FIFE", "ScreenHeight", 768)) - engineSetting.setRenderBackend(self._setting.get("FIFE", "RenderBackend", "OpenGL")) - engineSetting.setFullScreen(self._setting.get("FIFE", "FullScreen", 0)) - - engineSetting.setWindowTitle(self._setting.get("FIFE", "WindowTitle", "No window title set")) - engineSetting.setWindowIcon(self._setting.get("FIFE", "WindowIcon", "")) - engineSetting.setImageChunkingSize(self._setting.get("FIFE", "ImageChunkSize", 256)) - - def initLogging(self): - """ - Initialize the LogManager. - """ - - engineSetting = self.engine.getSettings() - logmodules = self._setting.get("FIFE", "LogModules", "controller") - - #log to both the console and log file - self._log = fifelog.LogManager(self.engine, - self._setting.get("FIFE", "LogToPrompt", "0"), - self._setting.get("FIFE", "LogToFile", "0")) - - self._log.setLevelFilter(fife.LogManager.LEVEL_DEBUG) - - if logmodules: - self._log.setVisibleModules(*logmodules) - def createListener(self): pass # already created in constructor diff -r 0196c83c7270 -r ee65aa323457 demos/shooter/run.py --- a/demos/shooter/run.py Tue May 18 16:01:35 2010 +0000 +++ b/demos/shooter/run.py Tue May 18 19:37:31 2010 +0000 @@ -67,13 +67,11 @@ class Shooter(ApplicationBase): def __init__(self): - super(Shooter,self).__init__() + super(Shooter,self).__init__(TDS) pychan.init(self.engine, debug=False) #This is requred if you want to use modal dialog boxes pychan.setupModalExecution(self.mainLoop,self.breakFromMainLoop) - - self._setting = TDS self._world = world.World(self, self.engine, self._setting) self._listener = ApplicationListener(self.engine, self._world) @@ -84,50 +82,6 @@ cmd.setCommandType(fife.CMD_QUIT_GAME) self.engine.getEventManager().dispatchCommand(cmd) - def loadSettings(self): - """ - Load the settings from a python file and load them into the engine. - Called in the ApplicationBase constructor. I hard coded all the - settings in here to remove the complexity of loading settings from - an XML file which would be out of scope of this demo. - """ - - self._setting = TDS - - glyphDft = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,!?-+/():;%&`'*#=[]\\\"" - engineSetting = self.engine.getSettings() - engineSetting.setDefaultFontGlyphs(self._setting.get("FIFE", "FontGlyphs", glyphDft)) - engineSetting.setDefaultFontPath(self._setting.get("FIFE", "Font", "fonts/FreeSans.ttf")) - engineSetting.setDefaultFontSize(self._setting.get("FIFE", "DefaultFontSize", 12)) - engineSetting.setBitsPerPixel(self._setting.get("FIFE", "BitsPerPixel", 0)) - engineSetting.setInitialVolume(self._setting.get("FIFE", "InitialVolume", 5.0)) - engineSetting.setSDLRemoveFakeAlpha(self._setting.get("FIFE", "SDLRemoveFakeAlpha", 1)) - engineSetting.setScreenWidth(self._setting.get("FIFE", "ScreenWidth", 1024)) - engineSetting.setScreenHeight(self._setting.get("FIFE", "ScreenHeight", 768)) - engineSetting.setRenderBackend(self._setting.get("FIFE", "RenderBackend", "OpenGL")) - engineSetting.setFullScreen(self._setting.get("FIFE", "FullScreen", 0)) - - engineSetting.setWindowTitle(self._setting.get("FIFE", "WindowTitle", "No window title set")) - engineSetting.setWindowIcon(self._setting.get("FIFE", "WindowIcon", "")) - engineSetting.setImageChunkingSize(self._setting.get("FIFE", "ImageChunkSize", 256)) - - def initLogging(self): - """ - Initialize the LogManager. - """ - - engineSetting = self.engine.getSettings() - logmodules = self._setting.get("FIFE", "LogModules", "controller") - - #log to both the console and log file - self._log = fifelog.LogManager(self.engine, - self._setting.get("FIFE", "LogToPrompt", "0"), - self._setting.get("FIFE", "LogToFile", "0")) - - self._log.setLevelFilter(fife.LogManager.LEVEL_DEBUG) - - if logmodules: - self._log.setVisibleModules(*logmodules) def createListener(self): pass # already created in constructor diff -r 0196c83c7270 -r ee65aa323457 engine/python/fife/extensions/basicapplication.py --- a/engine/python/fife/extensions/basicapplication.py Tue May 18 16:01:35 2010 +0000 +++ b/engine/python/fife/extensions/basicapplication.py Tue May 18 19:37:31 2010 +0000 @@ -30,6 +30,7 @@ from fife import fife from fife.extensions import fifelog from fife.extensions.serializers.xmlanimation import XMLAnimationLoader +from fife.extensions.fife_settings import Setting class ExitEventListener(fife.IKeyListener): """ @@ -68,7 +69,12 @@ to define runtime behavior of the application. """ - def __init__(self): + def __init__(self, setting=None): + if setting: + self._setting = setting + else: + self._setting = Setting(app_name="", settings_file="./settings.xml", settings_gui_xml="") + self.engine = fife.Engine() self.loadSettings() @@ -88,38 +94,39 @@ Load the settings from a python file and load them into the engine. Called in the ApplicationBase constructor. """ - import settings - self.settings = settings + glyphDft = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,!?-+/():;%&`'*#=[]\\\"" engineSetting = self.engine.getSettings() - engineSetting.setDefaultFontGlyphs(settings.FontGlyphs) - engineSetting.setDefaultFontPath(settings.Font) - engineSetting.setDefaultFontSize(12) - engineSetting.setBitsPerPixel(settings.BitsPerPixel) - engineSetting.setFullScreen(settings.FullScreen) - engineSetting.setInitialVolume(settings.InitialVolume) - engineSetting.setRenderBackend(settings.RenderBackend) - engineSetting.setSDLRemoveFakeAlpha(settings.SDLRemoveFakeAlpha) - engineSetting.setScreenWidth(settings.ScreenWidth) - engineSetting.setScreenHeight(settings.ScreenHeight) + engineSetting.setDefaultFontGlyphs(self._setting.get("FIFE", "FontGlyphs", glyphDft)) + engineSetting.setDefaultFontPath(self._setting.get("FIFE", "Font", "fonts/FreeSans.ttf")) + engineSetting.setDefaultFontSize(self._setting.get("FIFE", "DefaultFontSize", 12)) + engineSetting.setBitsPerPixel(self._setting.get("FIFE", "BitsPerPixel", 0)) + engineSetting.setInitialVolume(self._setting.get("FIFE", "InitialVolume", 5.0)) + engineSetting.setSDLRemoveFakeAlpha(self._setting.get("FIFE", "SDLRemoveFakeAlpha", 1)) + engineSetting.setScreenWidth(self._setting.get("FIFE", "ScreenWidth", 1024)) + engineSetting.setScreenHeight(self._setting.get("FIFE", "ScreenHeight", 768)) + engineSetting.setRenderBackend(self._setting.get("FIFE", "RenderBackend", "OpenGL")) + engineSetting.setFullScreen(self._setting.get("FIFE", "FullScreen", 0)) try: - engineSetting.setColorKeyEnabled(settings.ColorKeyEnabled) + engineSetting.setColorKeyEnabled(self._setting.get("FIFE", "ColorKeyEnabled", False)) except: pass try: - engineSetting.setColorKey(*settings.ColorKey) + key = self._setting.get("FIFE", "ColorKey", "255,255,255").split(',') + engineSetting.setColorKey(int(key[0]), int(key[1]), int(key[2])) except: pass try: - engineSetting.setWindowTitle(settings.WindowTitle) - engineSetting.setWindowIcon(settings.WindowIcon) + engineSetting.setWindowTitle(self._setting.get("FIFE", "WindowTitle", "No window title set")) + engineSetting.setWindowIcon(self._setting.get("FIFE", "WindowIcon", "")) except: pass + try: - engineSetting.setImageChunkingSize(settings.ImageChunkSize) + engineSetting.setImageChunkingSize(self._setting.get("FIFE", "ImageChunkSize", 256)) except: pass @@ -127,10 +134,20 @@ """ Initialize the LogManager. """ - self.log = fifelog.LogManager(self.engine, self.settings.LogToPrompt, self.settings.LogToFile) - if self.settings.LogModules: - self.log.setVisibleModules(*self.settings.LogModules) + + engineSetting = self.engine.getSettings() + logmodules = self._setting.get("FIFE", "LogModules", ["controller"]) + #log to both the console and log file + self._log = fifelog.LogManager(self.engine, + self._setting.get("FIFE", "LogToPrompt", "0"), + self._setting.get("FIFE", "LogToFile", "0")) + + self._log.setLevelFilter(self._setting.get("FIFE", "LogLevelFilter", fife.LogManager.LEVEL_DEBUG)) + + if logmodules: + self._log.setVisibleModules(*logmodules) + def createListener(self): """ This creates a default event listener, which will just close the program diff -r 0196c83c7270 -r ee65aa323457 engine/python/fife/extensions/fife_settings.py --- a/engine/python/fife/extensions/fife_settings.py Tue May 18 16:01:35 2010 +0000 +++ b/engine/python/fife/extensions/fife_settings.py Tue May 18 19:37:31 2010 +0000 @@ -78,6 +78,16 @@ """ +EMPTY_SETTINGS="""\ + + + + + + + +""" + class Setting(object): """ This class manages loading and saving of game settings. @@ -98,7 +108,7 @@ @type app_name: C{string} @param settings_file: The name of the settings file. If this parameter is provided it will look for the setting file as you specify it, first looking - in the working directory. + in the working directory. It will NOT look in the users home directory. @type settings_file: C{string} @param settings_gui_xml: If you specify this parameter you can customize the look of the settings dialog box. @@ -123,7 +133,12 @@ if not os.path.exists(os.path.join(self._appdata, self._settings_file)): - shutil.copyfile('settings-dist.xml', os.path.join(self._appdata, self._settings_file)) + if os.path.exists('settings-dist.xml'): + shutil.copyfile('settings-dist.xml', os.path.join(self._appdata, self._settings_file)) + else: + #no settings file found + tree = ET.parse(StringIO(EMPTY_SETTINGS)) + tree.write(os.path.join(self._appdata, self._settings_file), 'UTF-8') self._tree = ET.parse(os.path.join(self._appdata, self._settings_file)) self._root_element = self._tree.getroot() diff -r 0196c83c7270 -r ee65aa323457 tools/editor/scripts/editor.py --- a/tools/editor/scripts/editor.py Tue May 18 16:01:35 2010 +0000 +++ b/tools/editor/scripts/editor.py Tue May 18 19:37:31 2010 +0000 @@ -59,6 +59,8 @@ from mapview import MapView from fife.extensions.fife_settings import Setting +TDS = Setting(app_name="editor") + def getEditor(): """ Returns the Global editor instance """ if Editor.editor is None: @@ -95,51 +97,14 @@ self._change_map = -1 - self._settings = None + self._settings = TDS self._help_dialog = None - ApplicationBase.__init__(self, *args, **kwargs) + ApplicationBase.__init__(self, TDS, *args, **kwargs) MainWindow.__init__(self, *args, **kwargs) pychan.init(self.engine, debug=False) - - def loadSettings(self): - """ - Load the settings from a python file and load them into the engine. - Called in the ApplicationBase constructor. - """ - self._settings = Setting(app_name="editor") - TDS = self._settings - - glyphDft = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,!?-+/():;%&`'*#=[]\\\"" - engineSetting = self.engine.getSettings() - engineSetting.setDefaultFontGlyphs(TDS.get("FIFE", "FontGlyphs", glyphDft)) - engineSetting.setDefaultFontPath(TDS.get("FIFE", "Font", "fonts/FreeSans.ttf")) - engineSetting.setDefaultFontSize(12) - engineSetting.setBitsPerPixel(TDS.get("FIFE", "BitsPerPixel", 0)) - engineSetting.setInitialVolume(TDS.get("FIFE", "InitialVolume", 5.0)) - engineSetting.setSDLRemoveFakeAlpha(TDS.get("FIFE", "SDLRemoveFakeAlpha", 1)) - engineSetting.setScreenWidth(TDS.get("FIFE", "ScreenWidth", 1024)) - engineSetting.setScreenHeight(TDS.get("FIFE", "ScreenHeight", 768)) - engineSetting.setRenderBackend(TDS.get("FIFE", "RenderBackend", "OpenGL")) - engineSetting.setFullScreen(TDS.get("FIFE", "FullScreen", 0)) - - engineSetting.setWindowTitle(TDS.get("FIFE", "WindowTitle", "No window title set")) - engineSetting.setWindowIcon(TDS.get("FIFE", "WindowIcon", "")) - engineSetting.setImageChunkingSize(TDS.get("FIFE", "ImageChunkSize", 256)) - - def initLogging(self): - """ - Initialize the LogManager. - """ - from fife.extensions import fifelog - - logModules = self._settings.get("FIFE", "LogModules") - self.log = fifelog.LogManager(self.engine, self._settings.get("FIFE", "LogToPrompt"), self._settings.get("FIFE", "LogToFile")) - if logModules: - self.log.setVisibleModules(*logModules) - def _initTools(self): """ Initializes tools """ self._pluginmanager = plugin.PluginManager(self.getSettings())