mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 09:52:27 -04:00
Added notebooks to left and right bar frames
This commit is contained in:
parent
981890183b
commit
98b1526ea6
@ -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'
|
||||
|
@ -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.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.transformPane = wx.Panel(self.nb, -1)
|
||||
self.nb.AddPage(self.transformPane, 'Transform')
|
||||
|
||||
self.propSX = ObjectPropUIEntry(self.propPane, 'SX')
|
||||
self.propSY = ObjectPropUIEntry(self.propPane, 'SY')
|
||||
self.propSZ = ObjectPropUIEntry(self.propPane, 'SZ')
|
||||
self.propX = ObjectPropUIEntry(self.transformPane, 'X')
|
||||
self.propY = ObjectPropUIEntry(self.transformPane, 'Y')
|
||||
self.propZ = ObjectPropUIEntry(self.transformPane, 'Z')
|
||||
|
||||
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.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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user