mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 02:15:43 -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")
|
menuItem = self.menuEdit.Append(-1, "&Duplicate")
|
||||||
self.Bind(wx.EVT_MENU, self.onDuplicate, menuItem)
|
self.Bind(wx.EVT_MENU, self.onDuplicate, menuItem)
|
||||||
|
|
||||||
self.gridSnapMenuItem = self.menuEdit.Append(-1, "&Grid Snap", kind = wx.ITEM_CHECK)
|
menuItem = self.menuEdit.Append(-1, "&Undo")
|
||||||
self.Bind(wx.EVT_MENU, self.toggleGridSnap, self.gridSnapMenuItem)
|
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.menuOptions = wx.Menu()
|
||||||
self.menuBar.Insert(2, self.menuOptions, "&Options")
|
self.menuBar.Insert(2, self.menuOptions, "&Options")
|
||||||
|
|
||||||
self.gridSizeMenuItem = self.menuOptions.Append(-1, "&Grid Size")
|
self.gridSizeMenuItem = self.menuOptions.Append(-1, "&Grid Size")
|
||||||
self.Bind(wx.EVT_MENU, self.onGridSize, self.gridSizeMenuItem)
|
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.Bind(wx.EVT_MENU, self.onShowPandaObjects, self.showPandaObjectsMenuItem)
|
||||||
|
|
||||||
self.hotKeysMenuItem = self.menuOptions.Append(-1, "&Hot Keys")
|
self.hotKeysMenuItem = self.menuOptions.Append(-1, "&Hot Keys")
|
||||||
self.Bind(wx.EVT_MENU, self.onHotKeys, self.hotKeysMenuItem)
|
self.Bind(wx.EVT_MENU, self.onHotKeys, self.hotKeysMenuItem)
|
||||||
|
|
||||||
@ -130,15 +138,32 @@ class LevelEditorUI(WxAppShell):
|
|||||||
self.perspView = Viewport.makePerspective(self.viewFrame)
|
self.perspView = Viewport.makePerspective(self.viewFrame)
|
||||||
self.viewFrame.AppendWindow(self.perspView)
|
self.viewFrame.AppendWindow(self.perspView)
|
||||||
|
|
||||||
self.leftBarUpFrame = wx.SplitterWindow(self.leftFrame, wx.SP_3D | wx.SP_BORDER)
|
self.leftBarUpPane = wx.Panel(self.leftFrame)
|
||||||
self.leftBarUpPane = wx.Panel(self.leftBarUpFrame)
|
self.leftBarUpNB = wx.Notebook(self.leftBarUpPane, style=wx.NB_BOTTOM)
|
||||||
self.leftBarMidPane = wx.Panel(self.leftBarUpFrame)
|
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.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.rightBarUpPane = wx.Panel(self.rightFrame)
|
||||||
self.rightBarDownPane = 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.leftFrame.SplitHorizontally(self.leftBarUpPane, self.leftBarDownPane)
|
||||||
self.leftBarUpFrame.SplitHorizontally(self.leftBarUpPane, self.leftBarMidPane)
|
|
||||||
self.rightFrame.SplitHorizontally(self.rightBarUpPane, self.rightBarDownPane)
|
self.rightFrame.SplitHorizontally(self.rightBarUpPane, self.rightBarDownPane)
|
||||||
self.mainFrame.SplitVertically(self.leftFrame, self.baseFrame, 200)
|
self.mainFrame.SplitVertically(self.leftFrame, self.baseFrame, 200)
|
||||||
self.baseFrame.SplitVertically(self.viewFrame, self.rightFrame, 600)
|
self.baseFrame.SplitVertically(self.viewFrame, self.rightFrame, 600)
|
||||||
@ -149,7 +174,6 @@ class LevelEditorUI(WxAppShell):
|
|||||||
self.perspView.SetDropTarget(PandaTextDropTarget(self.editor, self.perspView))
|
self.perspView.SetDropTarget(PandaTextDropTarget(self.editor, self.perspView))
|
||||||
|
|
||||||
self.leftFrame.SetSashGravity(0.5)
|
self.leftFrame.SetSashGravity(0.5)
|
||||||
self.leftBarUpFrame.SetSashGravity(0.5)
|
|
||||||
self.rightFrame.SetSashGravity(0.5)
|
self.rightFrame.SetSashGravity(0.5)
|
||||||
self.baseFrame.SetSashGravity(1.0)
|
self.baseFrame.SetSashGravity(1.0)
|
||||||
|
|
||||||
@ -157,11 +181,11 @@ class LevelEditorUI(WxAppShell):
|
|||||||
sizer.Add(self.mainFrame, 1, wx.EXPAND, 0)
|
sizer.Add(self.mainFrame, 1, wx.EXPAND, 0)
|
||||||
self.SetSizer(sizer); self.Layout()
|
self.SetSizer(sizer); self.Layout()
|
||||||
|
|
||||||
self.objectPaletteUI = ObjectPaletteUI(self.leftBarUpPane, self.editor)
|
self.objectPaletteUI = ObjectPaletteUI(self.leftBarUpPane0, self.editor)
|
||||||
self.protoPaletteUI = ProtoPaletteUI(self.leftBarMidPane, self.editor)
|
self.protoPaletteUI = ProtoPaletteUI(self.leftBarUpPane1, self.editor)
|
||||||
self.objectPropertyUI = ObjectPropertyUI(self.rightBarUpPane, self.editor)
|
self.objectPropertyUI = ObjectPropertyUI(self.rightBarUpPane, self.editor)
|
||||||
self.sceneGraphUI = SceneGraphUI(self.leftBarDownPane, self.editor)
|
self.sceneGraphUI = SceneGraphUI(self.leftBarDownPane0, self.editor)
|
||||||
self.layerEditorUI = LayerEditorUI(self.rightBarDownPane, self.editor)
|
self.layerEditorUI = LayerEditorUI(self.rightBarDownPane0, self.editor)
|
||||||
|
|
||||||
def onSetFocus(self):
|
def onSetFocus(self):
|
||||||
print 'wx got focus'
|
print 'wx got focus'
|
||||||
|
@ -250,42 +250,54 @@ class ObjectPropertyUI(ScrolledPanel):
|
|||||||
mainSizer.Add(self.propPane, 1, wx.EXPAND, 0)
|
mainSizer.Add(self.propPane, 1, wx.EXPAND, 0)
|
||||||
self.SetSizer(mainSizer)
|
self.SetSizer(mainSizer)
|
||||||
|
|
||||||
self.propX = ObjectPropUIEntry(self.propPane, 'X')
|
self.nb = wx.Notebook(self.propPane, style=wx.NB_BOTTOM)
|
||||||
self.propY = ObjectPropUIEntry(self.propPane, 'Y')
|
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||||
self.propZ = ObjectPropUIEntry(self.propPane, 'Z')
|
sizer.Add(self.nb, 1, wx.EXPAND)
|
||||||
|
self.propPane.SetSizer(sizer)
|
||||||
|
|
||||||
self.propH = ObjectPropUISlider(self.propPane, 'H', 0, 0, 360)
|
self.transformPane = wx.Panel(self.nb, -1)
|
||||||
self.propP = ObjectPropUISlider(self.propPane, 'P', 0, 0, 360)
|
self.nb.AddPage(self.transformPane, 'Transform')
|
||||||
self.propR = ObjectPropUISlider(self.propPane, 'R', 0, 0, 360)
|
|
||||||
|
|
||||||
self.propSX = ObjectPropUIEntry(self.propPane, 'SX')
|
self.propX = ObjectPropUIEntry(self.transformPane, 'X')
|
||||||
self.propSY = ObjectPropUIEntry(self.propPane, 'SY')
|
self.propY = ObjectPropUIEntry(self.transformPane, 'Y')
|
||||||
self.propSZ = ObjectPropUIEntry(self.propPane, 'SZ')
|
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,
|
transformProps = [self.propX, self.propY, self.propZ, self.propH, self.propP, self.propR,
|
||||||
self.propSX, self.propSY, self.propSZ]
|
self.propSX, self.propSY, self.propSZ]
|
||||||
|
|
||||||
sizer = wx.BoxSizer(wx.VERTICAL)
|
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||||
sizer.AddMany(transformProps)
|
sizer.AddMany(transformProps)
|
||||||
|
self.transformPane.SetSizer(sizer)
|
||||||
for transformProp in transformProps:
|
for transformProp in transformProps:
|
||||||
transformProp.bindFunc(self.editor.objectMgr.onEnterObjectPropUI,
|
transformProp.bindFunc(self.editor.objectMgr.onEnterObjectPropUI,
|
||||||
self.editor.objectMgr.onLeaveObjectPropUI,
|
self.editor.objectMgr.onLeaveObjectPropUI,
|
||||||
self.editor.objectMgr.updateObjectTransform)
|
self.editor.objectMgr.updateObjectTransform)
|
||||||
|
|
||||||
|
self.lookPane = wx.Panel(self.nb, -1)
|
||||||
|
self.nb.AddPage(self.lookPane, 'Look')
|
||||||
|
|
||||||
objNP = obj[OG.OBJ_NP]
|
objNP = obj[OG.OBJ_NP]
|
||||||
objRGBA = obj[OG.OBJ_RGBA]
|
objRGBA = obj[OG.OBJ_RGBA]
|
||||||
self.propCR = ObjectPropUISlider(self.propPane, 'CR', objRGBA[0], 0, 1)
|
self.propCR = ObjectPropUISlider(self.lookPane, 'CR', objRGBA[0], 0, 1)
|
||||||
self.propCG = ObjectPropUISlider(self.propPane, 'CG', objRGBA[1], 0, 1)
|
self.propCG = ObjectPropUISlider(self.lookPane, 'CG', objRGBA[1], 0, 1)
|
||||||
self.propCB = ObjectPropUISlider(self.propPane, 'CB', objRGBA[2], 0, 1)
|
self.propCB = ObjectPropUISlider(self.lookPane, 'CB', objRGBA[2], 0, 1)
|
||||||
self.propCA = ObjectPropUISlider(self.propPane, 'CA', objRGBA[3], 0, 1)
|
self.propCA = ObjectPropUISlider(self.lookPane, 'CA', objRGBA[3], 0, 1)
|
||||||
colorProps = [self.propCR, self.propCG, self.propCB, self.propCA]
|
colorProps = [self.propCR, self.propCG, self.propCB, self.propCA]
|
||||||
|
|
||||||
for colorProp in colorProps:
|
for colorProp in colorProps:
|
||||||
colorProp.ui.bindFunc(self.onColorSlider)
|
colorProp.ui.bindFunc(self.onColorSlider)
|
||||||
|
|
||||||
|
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||||
sizer.AddMany(colorProps)
|
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 = wx.ColourData()
|
||||||
_colourData.SetColour(wx.Colour(objRGBA[0] * 255, objRGBA[1] * 255, objRGBA[2] * 255))
|
_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))
|
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]
|
objDef = obj[OG.OBJ_DEF]
|
||||||
|
|
||||||
if objDef.model is not None:
|
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)
|
sizer.Add(propUI)
|
||||||
|
|
||||||
propUI.bindFunc(self.editor.objectMgr.onEnterObjectPropUI,
|
propUI.bindFunc(self.editor.objectMgr.onEnterObjectPropUI,
|
||||||
@ -306,13 +318,19 @@ class ObjectPropertyUI(ScrolledPanel):
|
|||||||
lambda p0=None, p1=obj: self.editor.objectMgr.updateObjectModelFromUI(p0, p1))
|
lambda p0=None, p1=obj: self.editor.objectMgr.updateObjectModelFromUI(p0, p1))
|
||||||
|
|
||||||
if len(objDef.anims) > 0:
|
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)
|
sizer.Add(propUI)
|
||||||
|
|
||||||
propUI.bindFunc(self.editor.objectMgr.onEnterObjectPropUI,
|
propUI.bindFunc(self.editor.objectMgr.onEnterObjectPropUI,
|
||||||
self.editor.objectMgr.onLeaveObjectPropUI,
|
self.editor.objectMgr.onLeaveObjectPropUI,
|
||||||
lambda p0=None, p1=obj: self.editor.objectMgr.updateObjectAnimFromUI(p0, p1))
|
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():
|
for key in objDef.properties.keys():
|
||||||
propDef = objDef.properties[key]
|
propDef = objDef.properties[key]
|
||||||
propType = propDef[OG.PROP_TYPE]
|
propType = propDef[OG.PROP_TYPE]
|
||||||
@ -320,7 +338,7 @@ class ObjectPropertyUI(ScrolledPanel):
|
|||||||
value = obj[OG.OBJ_PROP].get(key)
|
value = obj[OG.OBJ_PROP].get(key)
|
||||||
|
|
||||||
if propType == OG.PROP_UI_ENTRY:
|
if propType == OG.PROP_UI_ENTRY:
|
||||||
propUI = ObjectPropUIEntry(self.propPane, key)
|
propUI = ObjectPropUIEntry(self.propsPane, key)
|
||||||
propUI.setValue(value)
|
propUI.setValue(value)
|
||||||
sizer.Add(propUI)
|
sizer.Add(propUI)
|
||||||
|
|
||||||
@ -332,7 +350,7 @@ class ObjectPropertyUI(ScrolledPanel):
|
|||||||
if value is None:
|
if value is None:
|
||||||
continue
|
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)
|
sizer.Add(propUI)
|
||||||
|
|
||||||
elif propType == OG.PROP_UI_SPIN:
|
elif propType == OG.PROP_UI_SPIN:
|
||||||
@ -343,14 +361,14 @@ class ObjectPropertyUI(ScrolledPanel):
|
|||||||
if value is None:
|
if value is None:
|
||||||
continue
|
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)
|
sizer.Add(propUI)
|
||||||
|
|
||||||
elif propType == OG.PROP_UI_CHECK:
|
elif propType == OG.PROP_UI_CHECK:
|
||||||
if value is None:
|
if value is None:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
propUI = ObjectPropUICheck(self.propPane, key, value)
|
propUI = ObjectPropUICheck(self.propsPane, key, value)
|
||||||
sizer.Add(propUI)
|
sizer.Add(propUI)
|
||||||
|
|
||||||
elif propType == OG.PROP_UI_RADIO:
|
elif propType == OG.PROP_UI_RADIO:
|
||||||
@ -367,7 +385,7 @@ class ObjectPropertyUI(ScrolledPanel):
|
|||||||
|
|
||||||
value = str(value)
|
value = str(value)
|
||||||
|
|
||||||
propUI = ObjectPropUIRadio(self.propPane, key, value, propRange)
|
propUI = ObjectPropUIRadio(self.propsPane, key, value, propRange)
|
||||||
sizer.Add(propUI)
|
sizer.Add(propUI)
|
||||||
|
|
||||||
elif propType == OG.PROP_UI_COMBO:
|
elif propType == OG.PROP_UI_COMBO:
|
||||||
@ -384,7 +402,7 @@ class ObjectPropertyUI(ScrolledPanel):
|
|||||||
|
|
||||||
value = str(value)
|
value = str(value)
|
||||||
|
|
||||||
propUI = ObjectPropUICombo(self.propPane, key, value, propRange)
|
propUI = ObjectPropUICombo(self.propsPane, key, value, propRange)
|
||||||
sizer.Add(propUI)
|
sizer.Add(propUI)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@ -396,6 +414,6 @@ class ObjectPropertyUI(ScrolledPanel):
|
|||||||
lambda p0=None, p1=obj, p2=key: self.editor.objectMgr.updateObjectProperty(p0, p1, p2))
|
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.Layout()
|
||||||
self.SetupScrolling(self, scroll_y = True, rate_y = 20)
|
self.SetupScrolling(self, scroll_y = True, rate_y = 20)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user