mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 16:58:40 -04:00
Added some codes to help dynamic combo UI
This commit is contained in:
parent
938d5fb27c
commit
865beb38f5
@ -11,6 +11,11 @@ from ActionMgr import *
|
||||
import ObjectGlobals as OG
|
||||
from ObjectPaletteBase import ObjectGen
|
||||
|
||||
# python wrapper around a panda.NodePath object
|
||||
class PythonNodePath(NodePath):
|
||||
def __init__(self,node):
|
||||
NodePath.NodePath.__init__(self,node)
|
||||
|
||||
class ObjectMgrBase:
|
||||
""" ObjectMgr will create, manage, update objects in the scene """
|
||||
|
||||
@ -119,9 +124,14 @@ class ObjectMgrBase:
|
||||
if model is None:
|
||||
model = objDef.model
|
||||
try:
|
||||
newobj = loader.loadModel(model)
|
||||
newobjModel = loader.loadModel(model)
|
||||
except:
|
||||
newobj = loader.loadModel(Filename.fromOsSpecific(model).getFullpath(), okMissing=True)
|
||||
newobjModel = loader.loadModel(Filename.fromOsSpecific(model).getFullpath(), okMissing=True)
|
||||
if newobjModel:
|
||||
newobj = PythonNodePath(newobjModel)
|
||||
else:
|
||||
newobj = None
|
||||
|
||||
else:
|
||||
newobj = hidden.attachNewNode(objDef.name)
|
||||
else:
|
||||
@ -371,9 +381,10 @@ class ObjectMgrBase:
|
||||
objRGBA = obj[OG.OBJ_RGBA]
|
||||
|
||||
# load new model
|
||||
newobj = loader.loadModel(model, okMissing=True)
|
||||
if newobj is None:
|
||||
newobjModel = loader.loadModel(model, okMissing=True)
|
||||
if newobjModel is None:
|
||||
return
|
||||
newobj = PythonNodePath(newobjModel)
|
||||
newobj.setTag('OBJRoot','1')
|
||||
|
||||
# reparent children
|
||||
@ -494,7 +505,7 @@ class ObjectMgrBase:
|
||||
fSelectObject=(propType != OG.PROP_UI_SLIDE)
|
||||
)
|
||||
|
||||
def updateObjectPropValue(self, obj, propName, val, fSelectObject=False):
|
||||
def updateObjectPropValue(self, obj, propName, val, fSelectObject=False, fUndo=True):
|
||||
"""
|
||||
Update object property value and
|
||||
call update function if defined.
|
||||
@ -556,7 +567,8 @@ class ObjectMgrBase:
|
||||
func = None
|
||||
undoFunc = None
|
||||
action = ActionUpdateObjectProp(self.editor, fSelectObject, obj, propName, val, oldVal, func, undoFunc)
|
||||
self.editor.actionMgr.push(action)
|
||||
if fUndo:
|
||||
self.editor.actionMgr.push(action)
|
||||
action()
|
||||
|
||||
if self.editor:
|
||||
|
@ -427,13 +427,13 @@ class ObjectPropertyUI(ScrolledPanel):
|
||||
dynamicRangeKey = obj[OG.OBJ_PROP].get(propDynamicKey)
|
||||
|
||||
if dynamicRangeKey is None:
|
||||
obj[OG.OBJ_PROP][key] = propDef[OG.PROP_DEFAULT]
|
||||
self.editor.objectMgr.updateObjectPropValue(obj, key, propDef[OG.PROP_DEFAULT], fUndo=False)
|
||||
continue
|
||||
|
||||
propRange = propDef[OG.PROP_RANGE].get(dynamicRangeKey)
|
||||
|
||||
if propRange is None:
|
||||
obj[OG.OBJ_PROP][key] = propDef[OG.PROP_DEFAULT]
|
||||
self.editor.objectMgr.updateObjectPropValue(obj, key, propDef[OG.PROP_DEFAULT], fUndo=False)
|
||||
continue
|
||||
|
||||
if value is None:
|
||||
@ -447,8 +447,8 @@ class ObjectPropertyUI(ScrolledPanel):
|
||||
|
||||
if value not in propRange:
|
||||
value = propRange[0]
|
||||
obj[OG.OBJ_PROP][key] = value
|
||||
|
||||
self.editor.objectMgr.updateObjectPropValue(obj, key, value, fUndo=False)
|
||||
|
||||
propUI = ObjectPropUICombo(self.propsPane, key, value, propRange)
|
||||
sizer.Add(propUI)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user