diff --git a/direct/src/leveleditor/LevelEditor.py b/direct/src/leveleditor/LevelEditor.py index c449e348d0..18e563f822 100644 --- a/direct/src/leveleditor/LevelEditor.py +++ b/direct/src/leveleditor/LevelEditor.py @@ -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() diff --git a/direct/src/leveleditor/LevelEditorBase.py b/direct/src/leveleditor/LevelEditorBase.py index b3b864e5dc..9cbcd32e77 100755 --- a/direct/src/leveleditor/LevelEditorBase.py +++ b/direct/src/leveleditor/LevelEditorBase.py @@ -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 + diff --git a/direct/src/leveleditor/LevelEditorUI.py b/direct/src/leveleditor/LevelEditorUI.py index 272d33c3a8..fc75bb7b69 100755 --- a/direct/src/leveleditor/LevelEditorUI.py +++ b/direct/src/leveleditor/LevelEditorUI.py @@ -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()