Poodletooth-iLand/panda/direct/leveleditor/ProtoPaletteBase.py

68 lines
2.1 KiB
Python
Raw Normal View History

2015-03-03 16:10:12 -06:00
"""
Palette for Prototyping
"""
import os
import imp
import types
from ObjectPaletteBase import *
class ProtoPaletteBase(ObjectPaletteBase):
def __init__(self):
ObjectPaletteBase.__init__(self)
# self.dirname should be defined in inherited class
assert self.dirname
def addItems(self):
if type(protoData) == types.DictType:
for key in protoData.keys():
if type(protoData[key]) == types.DictType:
self.add(key, parent)
self.addItems(protoData[key], key)
else:
self.add(protoData[key], parent)
def populate(self):
moduleName = 'protoPaletteData'
try:
file, pathname, description = imp.find_module(moduleName, [self.dirname])
module = imp.load_module(moduleName, file, pathname, description)
self.data = module.protoData
self.dataStruct = module.protoDataStruct
except:
print "protoPaletteData doesn't exist"
return
#self.addItems()
def saveProtoDataStruct(self, f):
if not f:
return
for key in self.dataStruct.keys():
f.write("\t'%s':'%s',\n"%(key, self.dataStruct[key]))
def saveProtoData(self, f):
if not f:
return
for key in self.data.keys():
if isinstance(self.data[key], ObjectBase):
f.write("\t'%s':ObjectBase(name='%s', model='%s', anims=%s, actor=%s),\n"%(key, self.data[key].name, self.data[key].model, self.data[key].anims, self.data[key].actor))
else:
f.write("\t'%s':ObjectGen(name='%s'),\n"%(key, self.data[key].name))
def saveToFile(self):
try:
f = open(self.dirname + '/protoPaletteData.py', 'w')
f.write("from direct.leveleditor.ObjectPaletteBase import *\n\n")
f.write("protoData = {\n")
self.saveProtoData(f)
f.write("}\n")
f.write("protoDataStruct = {\n")
self.saveProtoDataStruct(f)
f.write("}\n")
f.close()
except:
pass