historical/toontown-classic.git/panda/direct/leveleditor/ObjectPaletteUI.py
2024-01-16 11:20:27 -06:00

72 lines
2.3 KiB
Python

"""
Defines ObjectPalette tree UI
"""
import wx
from .PaletteTreeCtrl 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 = PaletteTreeCtrl(self, treeStyle=wx.TR_DEFAULT_STYLE, rootName='Objects')
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.opSortAlpha = "Sort Alphabetical Order"
self.opSortOrig = "Sort Original Order"
self.opSort = self.opSortOrig
self.menuItems = list()
self.menuItems.append(self.opSortAlpha)
self.menuItems.append(self.opSortOrig)
self.popupmenu = wx.Menu()
for item in self.menuItems:
menuItem = self.popupmenu.Append(-1, item)
self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
self.Bind(wx.EVT_CONTEXT_MENU, self.onShowPopup)
self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.onSelected)
def populate(self):
self.tree.addTreeNodes(self.tree.GetRootItem(), self.palette.rootName, self.palette.dataStruct, self.palette.dataKeys)
def onSelected(self, event):
pass
def onShowPopup(self, event):
pos = event.GetPosition()
pos = self.ScreenToClient(pos)
self.PopupMenu(self.popupmenu, pos)
def onPopupItemSelected(self, event):
menuItem = self.popupmenu.FindItemById(event.GetId())
text = menuItem.GetText()
if text == self.opSortAlpha:
self.opSort = self.opSortAlpha
elif text == self.opSortOrig:
self.opSort = self.opSortOrig
self.tree.SortTreeNodes(self.tree.GetRootItem())
def compareItems(self, item1, item2):
data1 = self.tree.GetItemText(item1)
data2 = self.tree.GetItemText(item2)
if self.opSort == self.opSortAlpha:
return cmp(data1, data2)
else:
index1 = self.palette.dataKeys.index(data1)
index2 = self.palette.dataKeys.index(data2)
return cmp(index1, index2)
def getSelected(self):
return self.tree.GetItemData(self.tree.GetSelection())