15 from pyfbsdk_additions
import *
17 def SetupPropertyList(model):
18 tool.container.Items.removeAll()
19 tool.list.Items.removeAll()
22 tool.prop.Property =
None
23 tool.prop_modern.Property =
None
28 tool.container.Items.append(model.Name)
29 tool.list.Items.append(
"<Select Property>")
30 tool.prop_list.append(
None)
31 for p
in model.PropertyList:
32 if p
and p.IsInternal()
and not p.GetPropertyFlag(FBPropertyFlag.kFBPropertyFlagHideProperty):
33 tool.list.Items.append(p.Name)
34 tool.prop_list.append(p)
35 tool.list.ItemIndex = 0
36 PropertyListChanged(tool.list,
None)
39 def EventContainerDblClick(control, event):
40 SetupPropertyList(
None)
42 def EventContainerDragAndDrop(control, event):
43 if event.State == FBDragAndDropState.kFBDragAndDropDrag:
45 elif event.State == FBDragAndDropState.kFBDragAndDropDrop:
46 SetupPropertyList( event.Components[0] )
48 def PropertyListChanged(control, event):
49 tool.prop.Property = tool.prop_list[control.ItemIndex]
50 tool.prop_modern.Property = tool.prop_list[control.ItemIndex]
52 def PrevProperty(control, event):
53 if tool.list.ItemIndex - 1 < 0:
54 tool.list.ItemIndex = len(tool.list.Items)-1
56 tool.list.ItemIndex = tool.list.ItemIndex - 1
57 PropertyListChanged(tool.list,
None)
59 def NextProperty(control, event):
60 if tool.list.ItemIndex + 1 >= len(tool.list.Items):
61 tool.list.ItemIndex = 0
63 tool.list.ItemIndex = tool.list.ItemIndex + 1
64 PropertyListChanged(tool.list,
None)
66 def SceneChanged(scene, event):
67 if len(tool.container.Items) != 0
and \
68 event.Type == FBSceneChangeType.kFBSceneChangeDetach
and \
69 event.ChildComponent == tool.model:
70 SetupPropertyList(
None)
73 def PopulateLayout(mainLyt):
78 mainLyt.AddRegion(
"main",
"main", x, y, w, h)
80 mainLyt.SetControl(
"main",vlyt)
83 l.Caption =
"Drag and drop a model into the container. Double click to clear."
88 tool.container.OnDragAndDrop.Add(EventContainerDragAndDrop)
89 tool.container.OnDblClick.Add(EventContainerDblClick)
90 vlyt.Add(tool.container,30)
94 tool.list.OnChange.Add(PropertyListChanged)
95 hlyt.AddRelative(tool.list)
98 prev.OnClick.Add(PrevProperty)
103 next.OnClick.Add(NextProperty)
110 vlyt.Add(tool.prop,30)
113 vlyt.Add(tool.prop_modern,30)
116 FBSystem().Scene.OnChange.Add(SceneChanged)
119 tool.OnUnbind.Add(OnToolDestroy)
122 def OnToolDestroy(control,event):
125 FBSystem().Scene.OnChange.Remove(SceneChanged)
131 tool.StartSizeX = 400
132 tool.StartSizeY = 200