writeConfigXml

This commit is contained in:
David Rose 2010-03-03 23:11:59 +00:00
parent 991d5179a3
commit c6120c1ec1

View File

@ -33,7 +33,7 @@ else:
from direct.showbase import VFSImporter from direct.showbase import VFSImporter
from direct.showbase.DirectObject import DirectObject 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 pandac import PandaModules
from direct.stdpy import file, glob from direct.stdpy import file, glob
from direct.task.TaskManagerGlobal import taskMgr from direct.task.TaskManagerGlobal import taskMgr
@ -503,6 +503,7 @@ class AppRunner(DirectObject):
if not hasattr(PandaModules, 'TiXmlDocument'): if not hasattr(PandaModules, 'TiXmlDocument'):
return return
from pandac.PandaModules import TiXmlDocument
filename = Filename(self.rootDir, self.ConfigBasename) filename = Filename(self.rootDir, self.ConfigBasename)
doc = TiXmlDocument(filename.toOsSpecific()) doc = TiXmlDocument(filename.toOsSpecific())
@ -516,7 +517,30 @@ class AppRunner(DirectObject):
self.maxDiskUsage = int(maxDiskUsage or '') self.maxDiskUsage = int(maxDiskUsage or '')
except ValueError: except ValueError:
pass 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): def checkDiskUsage(self):
""" Checks the total disk space used by all packages, and """ Checks the total disk space used by all packages, and