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.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