Browse Source

Added notebooks to left and right bar frames

Gyedo Jeon 16 years ago
parent
commit
98b1526ea6
2 changed files with 79 additions and 37 deletions
  1. 37 13
      direct/src/leveleditor/LevelEditorUI.py
  2. 42 24
      direct/src/leveleditor/ObjectPropertyUI.py

+ 37 - 13
direct/src/leveleditor/LevelEditorUI.py

@@ -96,16 +96,24 @@ class LevelEditorUI(WxAppShell):
         menuItem = self.menuEdit.Append(-1, "&Duplicate")
         self.Bind(wx.EVT_MENU, self.onDuplicate, menuItem)
 
-        self.gridSnapMenuItem = self.menuEdit.Append(-1, "&Grid Snap", kind = wx.ITEM_CHECK)
-        self.Bind(wx.EVT_MENU, self.toggleGridSnap, self.gridSnapMenuItem)
+        menuItem = self.menuEdit.Append(-1, "&Undo")
+        self.Bind(wx.EVT_MENU, self.editor.actionMgr.undo, menuItem)
+
+        menuItem = self.menuEdit.Append(-1, "&Rndo")
+        self.Bind(wx.EVT_MENU, self.editor.actionMgr.redo, menuItem)
 
         self.menuOptions = wx.Menu()
         self.menuBar.Insert(2, self.menuOptions, "&Options")
 
         self.gridSizeMenuItem = self.menuOptions.Append(-1, "&Grid Size")
         self.Bind(wx.EVT_MENU, self.onGridSize, self.gridSizeMenuItem)
-        self.showPandaObjectsMenuItem = self.menuOptions.Append(-1, "&Show Panda Objects", kind = wx.ITEM_CHECK)
+
+        self.gridSnapMenuItem = self.menuOptions.Append(-1, "Grid &Snap", kind = wx.ITEM_CHECK)
+        self.Bind(wx.EVT_MENU, self.toggleGridSnap, self.gridSnapMenuItem)
+
+        self.showPandaObjectsMenuItem = self.menuOptions.Append(-1, "Show &Panda Objects", kind = wx.ITEM_CHECK)
         self.Bind(wx.EVT_MENU, self.onShowPandaObjects, self.showPandaObjectsMenuItem)
+
         self.hotKeysMenuItem = self.menuOptions.Append(-1, "&Hot Keys")
         self.Bind(wx.EVT_MENU, self.onHotKeys, self.hotKeysMenuItem)
 
@@ -130,15 +138,32 @@ class LevelEditorUI(WxAppShell):
         self.perspView = Viewport.makePerspective(self.viewFrame)
         self.viewFrame.AppendWindow(self.perspView)
 
-        self.leftBarUpFrame = wx.SplitterWindow(self.leftFrame, wx.SP_3D | wx.SP_BORDER)
-        self.leftBarUpPane = wx.Panel(self.leftBarUpFrame)
-        self.leftBarMidPane = wx.Panel(self.leftBarUpFrame)
+        self.leftBarUpPane = wx.Panel(self.leftFrame)
+        self.leftBarUpNB = wx.Notebook(self.leftBarUpPane, style=wx.NB_BOTTOM)
+        sizer = wx.BoxSizer(wx.VERTICAL)
+        sizer.Add(self.leftBarUpNB, 1, wx.EXPAND)
+        self.leftBarUpPane.SetSizer(sizer)
+        self.leftBarUpPane0 = wx.Panel(self.leftBarUpNB, -1)
+        self.leftBarUpNB.AddPage(self.leftBarUpPane0, 'Object Palette')
+        self.leftBarUpPane1 = wx.Panel(self.leftBarUpNB, -1)
+        self.leftBarUpNB.AddPage(self.leftBarUpPane1, 'Proto Palette')
         self.leftBarDownPane = wx.Panel(self.leftFrame)
+        self.leftBarDownNB = wx.Notebook(self.leftBarDownPane)
+        sizer = wx.BoxSizer(wx.VERTICAL)
+        sizer.Add(self.leftBarDownNB, 1, wx.EXPAND)
+        self.leftBarDownPane.SetSizer(sizer)
+        self.leftBarDownPane0 = wx.Panel(self.leftBarDownNB, -1)
+        self.leftBarDownNB.AddPage(self.leftBarDownPane0, 'Scene Graph')
         self.rightBarUpPane = wx.Panel(self.rightFrame)
         self.rightBarDownPane = wx.Panel(self.rightFrame)
+        self.rightBarDownNB = wx.Notebook(self.rightBarDownPane)
+        sizer = wx.BoxSizer(wx.VERTICAL)
+        sizer.Add(self.rightBarDownNB, 1, wx.EXPAND)
+        self.rightBarDownPane.SetSizer(sizer)
+        self.rightBarDownPane0 = wx.Panel(self.rightBarDownNB, -1)
+        self.rightBarDownNB.AddPage(self.rightBarDownPane0, 'Layers')
 
-        self.leftFrame.SplitHorizontally(self.leftBarUpFrame, self.leftBarDownPane)
-        self.leftBarUpFrame.SplitHorizontally(self.leftBarUpPane, self.leftBarMidPane)
+        self.leftFrame.SplitHorizontally(self.leftBarUpPane, self.leftBarDownPane)
         self.rightFrame.SplitHorizontally(self.rightBarUpPane, self.rightBarDownPane)
         self.mainFrame.SplitVertically(self.leftFrame, self.baseFrame, 200)
         self.baseFrame.SplitVertically(self.viewFrame, self.rightFrame, 600)
@@ -149,7 +174,6 @@ class LevelEditorUI(WxAppShell):
         self.perspView.SetDropTarget(PandaTextDropTarget(self.editor, self.perspView))
         
         self.leftFrame.SetSashGravity(0.5)
-        self.leftBarUpFrame.SetSashGravity(0.5)
         self.rightFrame.SetSashGravity(0.5)        
         self.baseFrame.SetSashGravity(1.0)
 
@@ -157,11 +181,11 @@ class LevelEditorUI(WxAppShell):
         sizer.Add(self.mainFrame, 1, wx.EXPAND, 0)
         self.SetSizer(sizer); self.Layout()
 
-        self.objectPaletteUI = ObjectPaletteUI(self.leftBarUpPane, self.editor)
-        self.protoPaletteUI = ProtoPaletteUI(self.leftBarMidPane, self.editor)
+        self.objectPaletteUI = ObjectPaletteUI(self.leftBarUpPane0, self.editor)
+        self.protoPaletteUI = ProtoPaletteUI(self.leftBarUpPane1, self.editor)
         self.objectPropertyUI = ObjectPropertyUI(self.rightBarUpPane, self.editor)
-        self.sceneGraphUI = SceneGraphUI(self.leftBarDownPane, self.editor)
-        self.layerEditorUI = LayerEditorUI(self.rightBarDownPane, self.editor)
+        self.sceneGraphUI = SceneGraphUI(self.leftBarDownPane0, self.editor)
+        self.layerEditorUI = LayerEditorUI(self.rightBarDownPane0, self.editor)
 
     def onSetFocus(self):
         print 'wx got focus'

+ 42 - 24
direct/src/leveleditor/ObjectPropertyUI.py

@@ -250,42 +250,54 @@ class ObjectPropertyUI(ScrolledPanel):
         mainSizer.Add(self.propPane, 1, wx.EXPAND, 0)
         self.SetSizer(mainSizer)
 
-        self.propX = ObjectPropUIEntry(self.propPane, 'X')
-        self.propY = ObjectPropUIEntry(self.propPane, 'Y')
-        self.propZ = ObjectPropUIEntry(self.propPane, 'Z')
+        self.nb = wx.Notebook(self.propPane, style=wx.NB_BOTTOM)
+        sizer = wx.BoxSizer(wx.VERTICAL)
+        sizer.Add(self.nb, 1, wx.EXPAND)
+        self.propPane.SetSizer(sizer)
+
+        self.transformPane = wx.Panel(self.nb, -1)
+        self.nb.AddPage(self.transformPane, 'Transform')
+
+        self.propX = ObjectPropUIEntry(self.transformPane, 'X')
+        self.propY = ObjectPropUIEntry(self.transformPane, 'Y')
+        self.propZ = ObjectPropUIEntry(self.transformPane, 'Z')
 
-        self.propH = ObjectPropUISlider(self.propPane, 'H', 0, 0, 360)
-        self.propP = ObjectPropUISlider(self.propPane, 'P', 0, 0, 360)
-        self.propR = ObjectPropUISlider(self.propPane, 'R', 0, 0, 360)
+        self.propH = ObjectPropUISlider(self.transformPane, 'H', 0, 0, 360)
+        self.propP = ObjectPropUISlider(self.transformPane, 'P', 0, 0, 360)
+        self.propR = ObjectPropUISlider(self.transformPane, 'R', 0, 0, 360)
 
-        self.propSX = ObjectPropUIEntry(self.propPane, 'SX')
-        self.propSY = ObjectPropUIEntry(self.propPane, 'SY')
-        self.propSZ = ObjectPropUIEntry(self.propPane, 'SZ')
+        self.propSX = ObjectPropUIEntry(self.transformPane, 'SX')
+        self.propSY = ObjectPropUIEntry(self.transformPane, 'SY')
+        self.propSZ = ObjectPropUIEntry(self.transformPane, 'SZ')
 
         transformProps = [self.propX, self.propY, self.propZ, self.propH, self.propP, self.propR,
                        self.propSX, self.propSY, self.propSZ]
 
         sizer = wx.BoxSizer(wx.VERTICAL)
         sizer.AddMany(transformProps)
-
+        self.transformPane.SetSizer(sizer)
         for transformProp in transformProps:
             transformProp.bindFunc(self.editor.objectMgr.onEnterObjectPropUI,
                                    self.editor.objectMgr.onLeaveObjectPropUI,
                                    self.editor.objectMgr.updateObjectTransform)
 
+        self.lookPane = wx.Panel(self.nb, -1)
+        self.nb.AddPage(self.lookPane, 'Look')
+
         objNP = obj[OG.OBJ_NP]
         objRGBA = obj[OG.OBJ_RGBA]
-        self.propCR = ObjectPropUISlider(self.propPane, 'CR', objRGBA[0], 0, 1)
-        self.propCG = ObjectPropUISlider(self.propPane, 'CG', objRGBA[1], 0, 1)
-        self.propCB = ObjectPropUISlider(self.propPane, 'CB', objRGBA[2], 0, 1)        
-        self.propCA = ObjectPropUISlider(self.propPane, 'CA', objRGBA[3], 0, 1) 
+        self.propCR = ObjectPropUISlider(self.lookPane, 'CR', objRGBA[0], 0, 1)
+        self.propCG = ObjectPropUISlider(self.lookPane, 'CG', objRGBA[1], 0, 1)
+        self.propCB = ObjectPropUISlider(self.lookPane, 'CB', objRGBA[2], 0, 1)        
+        self.propCA = ObjectPropUISlider(self.lookPane, 'CA', objRGBA[3], 0, 1) 
         colorProps = [self.propCR, self.propCG, self.propCB, self.propCA]
 
         for colorProp in colorProps:
             colorProp.ui.bindFunc(self.onColorSlider)
 
+        sizer = wx.BoxSizer(wx.VERTICAL)
         sizer.AddMany(colorProps)
-        button = wx.Button(self.propPane, -1, 'Color Picker', (0,0), (140, 20))
+        button = wx.Button(self.lookPane, -1, 'Color Picker', (0,0), (140, 20))
         _colourData = wx.ColourData()
         _colourData.SetColour(wx.Colour(objRGBA[0] * 255, objRGBA[1] * 255, objRGBA[2] * 255))
         button.Bind(wx.EVT_BUTTON, lambda p0=None, p1=_colourData, p2=objRGBA[3] * 255: self.openColorPicker(p0, p1, p2))
@@ -298,7 +310,7 @@ class ObjectPropertyUI(ScrolledPanel):
         objDef = obj[OG.OBJ_DEF]
 
         if objDef.model is not None:
-            propUI = ObjectPropUICombo(self.propPane, 'model', obj[OG.OBJ_MODEL], objDef.models)
+            propUI = ObjectPropUICombo(self.lookPane, 'model', obj[OG.OBJ_MODEL], objDef.models)
             sizer.Add(propUI)            
 
             propUI.bindFunc(self.editor.objectMgr.onEnterObjectPropUI,
@@ -306,13 +318,19 @@ class ObjectPropertyUI(ScrolledPanel):
                             lambda p0=None, p1=obj: self.editor.objectMgr.updateObjectModelFromUI(p0, p1))
 
         if len(objDef.anims) > 0:
-            propUI = ObjectPropUICombo(self.propPane, 'anim', obj[OG.OBJ_ANIM], objDef.anims)
+            propUI = ObjectPropUICombo(self.lookPane, 'anim', obj[OG.OBJ_ANIM], objDef.anims)
             sizer.Add(propUI)            
 
             propUI.bindFunc(self.editor.objectMgr.onEnterObjectPropUI,
                             self.editor.objectMgr.onLeaveObjectPropUI,
                             lambda p0=None, p1=obj: self.editor.objectMgr.updateObjectAnimFromUI(p0, p1))
 
+        self.lookPane.SetSizer(sizer)
+
+        self.propsPane = wx.Panel(self.nb, -1)
+        self.nb.AddPage(self.propsPane, 'Props')
+        sizer = wx.BoxSizer(wx.VERTICAL)
+        
         for key in objDef.properties.keys():
             propDef = objDef.properties[key]
             propType = propDef[OG.PROP_TYPE]
@@ -320,7 +338,7 @@ class ObjectPropertyUI(ScrolledPanel):
             value = obj[OG.OBJ_PROP].get(key)
 
             if propType == OG.PROP_UI_ENTRY:
-                propUI = ObjectPropUIEntry(self.propPane, key)
+                propUI = ObjectPropUIEntry(self.propsPane, key)
                 propUI.setValue(value)
                 sizer.Add(propUI)
 
@@ -332,7 +350,7 @@ class ObjectPropertyUI(ScrolledPanel):
                 if value is None:
                     continue
 
-                propUI = ObjectPropUISlider(self.propPane, key, value, propRange[OG.RANGE_MIN], propRange[OG.RANGE_MAX])
+                propUI = ObjectPropUISlider(self.propsPane, key, value, propRange[OG.RANGE_MIN], propRange[OG.RANGE_MAX])
                 sizer.Add(propUI)
 
             elif propType == OG.PROP_UI_SPIN:
@@ -343,14 +361,14 @@ class ObjectPropertyUI(ScrolledPanel):
                 if value is None:
                     continue
 
-                propUI = ObjectPropUISpinner(self.propPane, key, value, propRange[OG.RANGE_MIN], propRange[OG.RANGE_MAX])
+                propUI = ObjectPropUISpinner(self.propsPane, key, value, propRange[OG.RANGE_MIN], propRange[OG.RANGE_MAX])
                 sizer.Add(propUI)                
 
             elif propType == OG.PROP_UI_CHECK:
                 if value is None:
                     continue
 
-                propUI = ObjectPropUICheck(self.propPane, key, value)
+                propUI = ObjectPropUICheck(self.propsPane, key, value)
                 sizer.Add(propUI)                  
 
             elif propType == OG.PROP_UI_RADIO:
@@ -367,7 +385,7 @@ class ObjectPropertyUI(ScrolledPanel):
 
                     value = str(value)
 
-                propUI = ObjectPropUIRadio(self.propPane, key, value, propRange)
+                propUI = ObjectPropUIRadio(self.propsPane, key, value, propRange)
                 sizer.Add(propUI)
 
             elif propType == OG.PROP_UI_COMBO:
@@ -384,7 +402,7 @@ class ObjectPropertyUI(ScrolledPanel):
 
                     value = str(value)
 
-                propUI = ObjectPropUICombo(self.propPane, key, value, propRange)
+                propUI = ObjectPropUICombo(self.propsPane, key, value, propRange)
                 sizer.Add(propUI)
 
             else:
@@ -396,6 +414,6 @@ class ObjectPropertyUI(ScrolledPanel):
                             lambda p0=None, p1=obj, p2=key: self.editor.objectMgr.updateObjectProperty(p0, p1, p2))
 
 
-        self.propPane.SetSizer(sizer);
+        self.propsPane.SetSizer(sizer);
         self.Layout()
         self.SetupScrolling(self, scroll_y = True, rate_y = 20)