SelectFromGMX.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. /*
  2. #include "SelectFromGMX.h"
  3. #include "..\..\NodesPool.h"
  4. extern TreeNodesPool* globalNodesPool;
  5. // GUIButton* btnOK;
  6. // GUIButton* btnCANCEL;
  7. // GUITreeView* TreeView1;
  8. extern string my_gmx_val;
  9. #define WINDOW_WIDTH 320
  10. #define WINDOW_HEIGHT 270
  11. TSSFGeometry::TSSFGeometry (int posX, int posY, IGMXScene* scene) : GUIWindow (NULL, posX, posY, WINDOW_WIDTH, WINDOW_HEIGHT)
  12. {
  13. bPopupStyle = true;
  14. bAlwaysOnTop = true;
  15. pScene = scene;
  16. Caption = "Select geometry";
  17. TreeView1 = NEW GUITreeView (this, 5, 5, 300, 230);
  18. TreeView1->FontColor = 0xFF000000;
  19. TreeView1->pFont->SetName ("arialcyrsmall");
  20. TreeView1->SetImagesArray ("gtree");
  21. TreeView1->Items->Clear ();
  22. TreeView1->MakeFlat (true);
  23. //btnCANCEL;
  24. btnOK = NEW GUIButton (this, 5, 240, 100, 24);
  25. btnOK->Glyph->Load ("ok");
  26. btnOK->Caption = "Select";
  27. btnOK->FontColor = 0xFF000000;
  28. btnOK->pFont->SetName ("arialcyrsmall");
  29. btnOK->OnMousePressed = (CONTROL_EVENT)&TSSFGeometry::OKPressed;
  30. btnOK->FlatButton = true;
  31. btnCANCEL = NEW GUIButton (this, 116, 240, 100, 24);
  32. btnCANCEL->Glyph->Load ("cancel");
  33. btnCANCEL->Caption = "cancel";
  34. btnCANCEL->FontColor = 0xFF000000;
  35. btnCANCEL->pFont->SetName ("arialcyrsmall");
  36. btnCANCEL->OnMousePressed = (CONTROL_EVENT)&TSSFGeometry::CANCELPressed;
  37. btnCANCEL->FlatButton = true;
  38. if (scene)
  39. {
  40. IGMXIterator* pIter = scene->CreateIterator (_FL_);
  41. for (pIter->Begin (); !pIter->IsDone(); pIter->Next ())
  42. {
  43. IGMXEntity* pEnt = pIter->Get ();
  44. AddNode (pEnt);
  45. }
  46. pIter->Release ();
  47. }
  48. }
  49. TSSFGeometry::~TSSFGeometry ()
  50. {
  51. delete btnOK;
  52. delete btnCANCEL;
  53. delete TreeView1;
  54. }
  55. GUITreeNode* TSSFGeometry::FindObject (IGMXEntity* obj, GUITreeNodes* items)
  56. {
  57. for (int n =0; n < items->GetCount(); n++)
  58. {
  59. IGMXEntity* tn = (IGMXEntity*)items->Get(n)->Data;
  60. if (tn == obj) return items->Get(n);
  61. if (items->Get(n)->Childs.GetCount () > 0)
  62. {
  63. GUITreeNode* result = FindObject (obj, &items->Get(n)->Childs);
  64. if (result) return result;
  65. }
  66. }
  67. return NULL;
  68. }
  69. void TSSFGeometry::AddNode (IGMXEntity* pEnt)
  70. {
  71. GUITreeNode* treenode = globalNodesPool->CreateNode();
  72. treenode->SetText(pEnt->GetName ());
  73. if (pEnt->GetType () == GMXET_LOCATOR)
  74. {
  75. treenode->Image->Load ("locator");
  76. } else
  77. {
  78. if (pEnt->GetType () == GMXET_GROUP)
  79. {
  80. treenode->Image->Load ("folder");
  81. } else
  82. {
  83. treenode->Image->Load ("mesh");
  84. }
  85. }
  86. treenode->Data = pEnt;
  87. // Если нужно добавляем к корню...
  88. if (pEnt->GetParent() == pScene->GetRoot ())
  89. {
  90. TreeView1->Items->Add (treenode);
  91. return;
  92. } else
  93. {
  94. GUITreeNode* parent = FindObject (pEnt->GetParent(), TreeView1->Items);
  95. if (parent)
  96. {
  97. parent->Childs.Add (treenode);
  98. return;
  99. } else
  100. {
  101. AddNode (pEnt->GetParent());
  102. AddNode (pEnt);
  103. return;
  104. }
  105. }
  106. }
  107. void _cdecl TSSFGeometry::OKPressed (GUIControl* sender)
  108. {
  109. GUITreeNode* s_node = TreeView1->GetSelectedNode();
  110. if (s_node)
  111. {
  112. //my_gmx_val = pScene->getf;
  113. my_gmx_val = ((IGMXEntity*)s_node->Data)->GetFullName().c_str();
  114. } else
  115. {
  116. my_gmx_val = "";
  117. }
  118. Close (this);
  119. }
  120. void _cdecl TSSFGeometry::CANCELPressed (GUIControl* sender)
  121. {
  122. Close (this);
  123. }
  124. */