瀏覽代碼

Made gridSize option to be saved, reloaded

Gyedo Jeon 16 年之前
父節點
當前提交
d1f459cf1d

+ 4 - 0
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()

+ 39 - 0
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
+

+ 21 - 17
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()