open_toontown_panda3d/direct/src/leveleditor/ObjectPaletteUI.py

54 lines
1.7 KiB
Python
Executable File

"""
Defines ObjectPalette tree UI
"""
import wx
import cPickle as pickle
from ObjectPalette import *
class ObjectPaletteUI(wx.Panel):
def __init__(self, parent, editor):
wx.Panel.__init__(self, parent)
self.editor = editor
self.palette = self.editor.objectPalette
self.tree = wx.TreeCtrl(self)
root = self.tree.AddRoot('Objects')
self.addTreeNodes(root, self.palette.data)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.tree, 1, wx.EXPAND, 0)
self.SetSizer(sizer); self.Layout()
parentSizer = wx.BoxSizer(wx.VERTICAL)
parentSizer.Add(self, 1, wx.EXPAND, 0)
parent.SetSizer(parentSizer); parent.Layout()
self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.onSelected)
self.tree.Bind(wx.EVT_TREE_BEGIN_DRAG, self.onBeginDrag)
def addTreeNodes(self, parentItem, items):
for key in items.keys():
newItem = self.tree.AppendItem(parentItem, key)
if type(items[key]) == dict:
self.addTreeNodes(newItem, items[key])
else:
self.tree.SetItemPyData(newItem, items[key])
def onSelected(self, event):
data = self.tree.GetItemPyData(event.GetItem())
if data:
print data.properties
def onBeginDrag(self, event):
item = event.GetItem()
if item != self.tree.GetRootItem(): # prevent dragging root item
text = self.tree.GetItemText(item)
print "Starting drag'n'drop with %s..." % repr(text)
tdo = wx.TextDataObject(text)
tds = wx.DropSource(self.tree)
tds.SetData(tdo)
tds.DoDragDrop(True)