From c6120c1ec14d43b04029849a212aef41d54ce0b4 Mon Sep 17 00:00:00 2001 From: David Rose Date: Wed, 3 Mar 2010 23:11:59 +0000 Subject: [PATCH] writeConfigXml --- direct/src/p3d/AppRunner.py | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/direct/src/p3d/AppRunner.py b/direct/src/p3d/AppRunner.py index 21ec9a5941..a5a5f7e6cd 100644 --- a/direct/src/p3d/AppRunner.py +++ b/direct/src/p3d/AppRunner.py @@ -33,7 +33,7 @@ else: from direct.showbase import VFSImporter from direct.showbase.DirectObject import DirectObject -from pandac.PandaModules import VirtualFileSystem, Filename, Multifile, loadPrcFileData, unloadPrcFile, getModelPath, Thread, WindowProperties, ExecutionEnvironment, PandaSystem, Notify, StreamWriter, ConfigVariableString, initAppForGui, TiXmlDocument +from pandac.PandaModules import VirtualFileSystem, Filename, Multifile, loadPrcFileData, unloadPrcFile, getModelPath, Thread, WindowProperties, ExecutionEnvironment, PandaSystem, Notify, StreamWriter, ConfigVariableString, initAppForGui from pandac import PandaModules from direct.stdpy import file, glob from direct.task.TaskManagerGlobal import taskMgr @@ -503,6 +503,7 @@ class AppRunner(DirectObject): if not hasattr(PandaModules, 'TiXmlDocument'): return + from pandac.PandaModules import TiXmlDocument filename = Filename(self.rootDir, self.ConfigBasename) doc = TiXmlDocument(filename.toOsSpecific()) @@ -516,7 +517,30 @@ class AppRunner(DirectObject): self.maxDiskUsage = int(maxDiskUsage or '') except ValueError: pass - + + def writeConfigXml(self): + """ Rewrites the config.xml to the root directory. This isn't + called automatically; an application may call this after + adjusting some parameters (such as self.maxDiskUsage). """ + + from pandac.PandaModules import TiXmlDocument, TiXmlDeclaration, TiXmlElement + + filename = Filename(self.rootDir, self.ConfigBasename) + doc = TiXmlDocument(filename.toOsSpecific()) + decl = TiXmlDeclaration("1.0", "utf-8", "") + doc.InsertEndChild(decl) + + xconfig = TiXmlElement('config') + xconfig.SetAttribute('max_disk_usage', str(self.maxDiskUsage)) + doc.InsertEndChild(xconfig) + + # Write the file to a temporary filename, then atomically move + # it to its actual filename, to avoid race conditions when + # updating this file. + tfile = Filename.temporary(self.rootDir.cStr(), '.xml') + if doc.SaveFile(tfile.toOsSpecific()): + tfile.renameTo(filename) + def checkDiskUsage(self): """ Checks the total disk space used by all packages, and