Made gridSize option to be saved, reloaded

This commit is contained in:
Gyedo Jeon 2009-11-04 02:13:39 +00:00
parent 7984eecde7
commit d1f459cf1d
3 changed files with 64 additions and 17 deletions

View File

@ -14,6 +14,10 @@ class LevelEditor(LevelEditorBase):
""" Class for Panda3D LevelEditor """
def __init__(self):
LevelEditorBase.__init__(self)
# define your own config file similar to this
self.settingsFile = os.path.dirname(__file__) + '/LevelEditor.cfg'
# If you have your own ObjectPalette and ObjectHandler
# connect them in your own LevelEditor class
self.objectPalette = ObjectPalette()

View File

@ -23,6 +23,9 @@ class LevelEditorBase(DirectObject):
self.actionEvents = []
self.objectMgr = ObjectMgr(self)
self.fileMgr = FileMgr(self)
# define your own config file in inherited class
self.settingsFile = None
def initialize(self):
""" You should call this in your __init__ method of inherited LevelEditor class """
@ -85,6 +88,8 @@ class LevelEditorBase(DirectObject):
else:
self.accept(event[0], event[1])
self.loadSettings()
def removeNodePathHook(self, nodePath):
if nodePath is None:
return
@ -142,3 +147,37 @@ class LevelEditorBase(DirectObject):
self.reset()
self.fileMgr.loadFromFile(fileName)
self.currentFile = fileName
def saveSettings(self):
if self.settingsFile is None:
return
try:
f = open(self.settingsFile, 'w')
f.write('gridSize %f\n'%self.ui.perspView.grid.gridSize)
f.write('gridSpacing %f\n'%self.ui.perspView.grid.gridSpacing)
f.close()
except:
pass
def loadSettings(self):
if self.settingsFile is None:
return
try:
f = open(self.settingsFile, 'r')
configLines = f.readlines()
f.close()
gridSize = 100.0
gridSpacing = 5.0
for line in configLines:
if line.startswith('gridSize'):
gridSize = float(line.split()[1])
elif line.startswith('gridSpacing'):
gridSpacing = float(line.split()[1])
self.ui.updateGrids(gridSize, gridSpacing)
except:
pass

View File

@ -177,6 +177,26 @@ class LevelEditorUI(WxAppShell):
gridSizeUI.ShowModal()
gridSizeUI.Destroy()
def onDestroy(self, evt):
self.editor.saveSettings()
def updateGrids(self, newSize, newSpacing):
self.perspView.grid.gridSize = newSize
self.perspView.grid.gridSpacing = newSpacing
self.perspView.grid.updateGrid()
self.topView.grid.gridSize = newSize
self.topView.grid.gridSpacing = newSpacing
self.topView.grid.updateGrid()
self.frontView.grid.gridSize = newSize
self.frontView.grid.gridSpacing = newSpacing
self.frontView.grid.updateGrid()
self.leftView.grid.gridSize = newSize
self.leftView.grid.gridSpacing = newSpacing
self.leftView.grid.updateGrid()
class GridSizeUI(wx.Dialog):
def __init__(self, parent, id, title, gridSize, gridSpacing):
wx.Dialog.__init__(self, parent, id, title, size=(250, 240))
@ -209,21 +229,5 @@ class GridSizeUI(wx.Dialog):
def onApply(self, evt):
newSize = self.gridSizeSlider.GetValue()
newSpacing = self.gridSpacingSlider.GetValue()
self.parent.perspView.grid.gridSize = newSize
self.parent.perspView.grid.gridSpacing = newSpacing
self.parent.perspView.grid.updateGrid()
self.parent.topView.grid.gridSize = newSize
self.parent.topView.grid.gridSpacing = newSpacing
self.parent.topView.grid.updateGrid()
self.parent.frontView.grid.gridSize = newSize
self.parent.frontView.grid.gridSpacing = newSpacing
self.parent.frontView.grid.updateGrid()
self.parent.leftView.grid.gridSize = newSize
self.parent.leftView.grid.gridSpacing = newSpacing
self.parent.leftView.grid.updateGrid()
self.parent.updateGrids(newSize, newSpacing)
self.Destroy()