ObjectPaletteUI.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. """
  2. Defines ObjectPalette tree UI
  3. """
  4. import wx
  5. import cPickle as pickle
  6. from PaletteTreeCtrl import *
  7. class ObjectPaletteUI(wx.Panel):
  8. def __init__(self, parent, editor):
  9. wx.Panel.__init__(self, parent)
  10. self.editor = editor
  11. self.palette = self.editor.objectPalette
  12. self.tree = PaletteTreeCtrl(self, treeStyle=wx.TR_DEFAULT_STYLE, rootName='Objects')
  13. sizer = wx.BoxSizer(wx.VERTICAL)
  14. sizer.Add(self.tree, 1, wx.EXPAND, 0)
  15. self.SetSizer(sizer); self.Layout()
  16. parentSizer = wx.BoxSizer(wx.VERTICAL)
  17. parentSizer.Add(self, 1, wx.EXPAND, 0)
  18. parent.SetSizer(parentSizer); parent.Layout()
  19. self.opSortAlpha = "Sort Alphabetical Order"
  20. self.opSortOrig = "Sort Original Order"
  21. self.opSort = self.opSortOrig
  22. self.menuItems = list()
  23. self.menuItems.append(self.opSortAlpha)
  24. self.menuItems.append(self.opSortOrig)
  25. self.popupmenu = wx.Menu()
  26. for item in self.menuItems:
  27. menuItem = self.popupmenu.Append(-1, item)
  28. self.Bind(wx.EVT_MENU, self.onPopupItemSelected, menuItem)
  29. self.Bind(wx.EVT_CONTEXT_MENU, self.onShowPopup)
  30. self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.onSelected)
  31. def populate(self):
  32. self.tree.addTreeNodes(self.tree.GetRootItem(), self.palette.rootName, self.palette.dataStruct, self.palette.dataKeys)
  33. def onSelected(self, event):
  34. pass
  35. def onShowPopup(self, event):
  36. pos = event.GetPosition()
  37. pos = self.ScreenToClient(pos)
  38. self.PopupMenu(self.popupmenu, pos)
  39. def onPopupItemSelected(self, event):
  40. menuItem = self.popupmenu.FindItemById(event.GetId())
  41. text = menuItem.GetText()
  42. if text == self.opSortAlpha:
  43. self.opSort = self.opSortAlpha
  44. elif text == self.opSortOrig:
  45. self.opSort = self.opSortOrig
  46. self.tree.SortTreeNodes(self.tree.GetRootItem())
  47. def compareItems(self, item1, item2):
  48. data1 = self.tree.GetItemText(item1)
  49. data2 = self.tree.GetItemText(item2)
  50. if self.opSort == self.opSortAlpha:
  51. return cmp(data1, data2)
  52. else:
  53. index1 = self.palette.dataKeys.index(data1)
  54. index2 = self.palette.dataKeys.index(data2)
  55. return cmp(index1, index2)
  56. def getSelected(self):
  57. return self.tree.GetItemPyData(self.tree.GetSelection())