NodesPool.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include "NodesPool.h"
  2. #include "..\common_h\gui.h"
  3. TreeNodesPool * pool = NULL;
  4. TreeNodesPool::TreeNodesPool()
  5. {
  6. Assert(pool == NULL);
  7. pool = this;
  8. bIsReadOnlyMode = false;
  9. }
  10. TreeNodesPool::~TreeNodesPool()
  11. {
  12. pool = NULL;
  13. nodesPool.Destroy();
  14. }
  15. void TreeNodesPool::DefaultReadOnly(bool bVal)
  16. {
  17. bIsReadOnlyMode = bVal;
  18. }
  19. GUITreeNode* TreeNodesPool::CreateNode ()
  20. {
  21. EditorTreeNode* nd = nodesPool.Allocate();
  22. nd->bReadOnly = bIsReadOnlyMode;
  23. if (bIsReadOnlyMode)
  24. {
  25. nd->CanDrag = false;
  26. nd->CanDrop = false;
  27. }
  28. return nd;
  29. //return NEW GUITreeNode;
  30. }
  31. //---------------------------------
  32. void EditorTreeNode::Release ()
  33. {
  34. // Если есть список-владелец
  35. if (OwnerList)
  36. {
  37. // Ищем себя в этом списке
  38. for (int n =0; n < OwnerList->GetCount (); n++)
  39. {
  40. // Нашли
  41. if (OwnerList->Get (n) == this)
  42. {
  43. // Удалили себя из списка...
  44. OwnerList->Delete (n);
  45. pool->nodesPool.Free(this);
  46. //delete this;
  47. break;
  48. }
  49. }
  50. } else
  51. {
  52. pool->nodesPool.Free(this);
  53. //delete this;
  54. }
  55. }