StringForm.cpp 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. #include "stringform.h"
  2. #include "stringattr.h"
  3. #include "..\strutil.h"
  4. #include "..\pathutils.h"
  5. #include "SelectFromMission.h"
  6. #include "SelectFromGMX.h"
  7. #include "..\..\forms\mainwindow.h"
  8. #include "..\..\forms\resourceselect.h"
  9. #include "..\..\..\common_h\mission.h"
  10. TSSFMission* newMisWnd = NULL;
  11. //TSSFGeometry* newGMXWnd = NULL;
  12. extern TMainWindow* MainWindow;
  13. extern IMission* miss;
  14. string my_val;
  15. string my_gmx_val;
  16. #define WINDOW_WIDTH 302
  17. #define WINDOW_HEIGHT 65
  18. extern IRender* pRS;
  19. TStringEdit::TStringEdit (int posX, int posY) : GUIWindow (NULL, posX, posY, WINDOW_WIDTH, WINDOW_HEIGHT)
  20. {
  21. bPopupStyle = true;
  22. bAlwaysOnTop = true;
  23. bSystemButton = false;
  24. Caption = STRINGEDIT_WINDOWNAME;
  25. eValue = NEW GUIEdit (this, 6, 6, 217-12, 19);
  26. eValue->OnAccept = (CONTROL_EVENT)&TStringEdit::OnDataChange;
  27. eValue->pFont->SetName("arialcyrsmall");
  28. eValue->Flat = true;
  29. btnOK = NEW GUIButton (this, 30+9+15,30, 78, 24);
  30. btnOK->Glyph->Load ("meditor\\ok");
  31. btnOK->Caption = "Accept";
  32. btnOK->pFont->SetName("arialcyrsmall");
  33. btnOK->FlatButton = true;
  34. btnCancel = NEW GUIButton (this, 30+95+15,30, 78, 24);
  35. btnCancel->Glyph->Load ("meditor\\cancel");
  36. btnCancel->Caption = "Cancel";
  37. btnCancel->pFont->SetName("arialcyrsmall");
  38. btnCancel->FlatButton = true;
  39. //------------------
  40. /*
  41. btnTakeFromStatic = NEW GUIButton (this, 212+59,6, 22, 22);
  42. btnTakeFromStatic->Glyph->Load ("meditor\\take_from_static");
  43. btnTakeFromStatic->OnMousePressed = (CONTROL_EVENT)OnSelectFromGMX;
  44. btnTakeFromStatic->FlatButton = true;
  45. btnTakeFromStatic->Hint = "Take string from static geometry";
  46. */
  47. btnTakeFromMission = NEW GUIButton (this, 212+32,6, 22, 22);
  48. btnTakeFromMission->Glyph->Load ("meditor\\take_from_mission");
  49. btnTakeFromMission->OnMousePressed = (CONTROL_EVENT)&TStringEdit::OnSelectFromMission;
  50. btnTakeFromMission->FlatButton = true;
  51. btnTakeFromMission->Hint = "Take string from mission";
  52. btnTakeFromFile = NEW GUIButton (this, 212+5,6, 22, 22);
  53. btnTakeFromFile->Glyph->Load ("folder");
  54. btnTakeFromFile->OnMousePressed = (CONTROL_EVENT)&TStringEdit::OnSelectFromFile;
  55. btnTakeFromFile->FlatButton = true;
  56. btnTakeFromFile->Hint = "Take string from file";
  57. btnOK->OnMousePressed = (CONTROL_EVENT)&TStringEdit::OnButtonOK;
  58. btnCancel->OnMousePressed = (CONTROL_EVENT)&TStringEdit::OnButtonCancel;
  59. }
  60. TStringEdit::~TStringEdit ()
  61. {
  62. delete btnTakeFromFile;
  63. // delete btnTakeFromStatic;
  64. delete btnTakeFromMission;
  65. delete btnOK;
  66. delete btnCancel;
  67. delete eValue;
  68. }
  69. void _cdecl TStringEdit::OnDataChange (GUIControl* sender)
  70. {
  71. if (MasterAttrib->GetIsLimit ())
  72. {
  73. if (MasterAttrib->onlyHi) eValue->Text.Upper();
  74. if (MasterAttrib->onlyLo) eValue->Text.Lower ();
  75. }
  76. }
  77. void _cdecl TStringEdit::OnButtonOK (GUIControl* sender)
  78. {
  79. if (MasterAttrib->GetIsLimit ())
  80. {
  81. if (eValue->Text.Len() < (DWORD)MasterAttrib->GetMinChars()) return;
  82. if (eValue->Text.Len() > (DWORD)MasterAttrib->GetMaxChars()) return;
  83. }
  84. MasterAttrib->SetValue (eValue->Text);
  85. Close (this);
  86. }
  87. void _cdecl TStringEdit::OnButtonCancel (GUIControl* sender)
  88. {
  89. Close (this);
  90. }
  91. void _cdecl TStringEdit::OnSelectFromGMX (GUIControl* sender)
  92. {
  93. /*
  94. StaticGeometry* sg = miss->GetStatic ();
  95. IGMXScene* pSc = NULL;
  96. if (sg) pSc = sg->GetScene ();
  97. int cX;
  98. int cY;
  99. Application->GetCursor (cX, cY);
  100. newGMXWnd = NEW TSSFGeometry (cX, cY, pSc);
  101. newGMXWnd->OnClose = (CONTROL_EVENT)OnCloseSFG;
  102. Application->ShowModal (newGMXWnd);
  103. */
  104. }
  105. void _cdecl TStringEdit::OnSelectFromMission (GUIControl* sender)
  106. {
  107. int cX;
  108. int cY;
  109. Application->GetCursor (cX, cY);
  110. newMisWnd = NEW TSSFMission (cX, cY);
  111. newMisWnd->OnClose = (CONTROL_EVENT)&TStringEdit::OnCloseSFM;
  112. Application->ShowModal (newMisWnd);
  113. }
  114. void _cdecl TStringEdit::OnCloseSFM (GUIControl* sender)
  115. {
  116. if (newMisWnd)
  117. {
  118. eValue->Text = my_val;
  119. }
  120. }
  121. void _cdecl TStringEdit::OnCloseSFG (GUIControl* sender)
  122. {
  123. /*
  124. if (newGMXWnd)
  125. {
  126. eValue->Text = my_gmx_val;
  127. }
  128. */
  129. }
  130. void _cdecl TStringEdit::OnSelectFromFile (GUIControl* sender)
  131. {
  132. TResourceSelectorWindow* Selector = NEW TResourceSelectorWindow();
  133. Selector->OnSelect = (CONTROL_EVENT)&TStringEdit::OnSelectFileAndClose;
  134. Application->ShowModal (Selector);
  135. }
  136. void _cdecl TStringEdit::OnSelectFileAndClose (GUIControl* sender)
  137. {
  138. TResourceSelectorWindow* sndr = (TResourceSelectorWindow*)sender;
  139. eValue->Text = sndr->ObjectName;
  140. }
  141. void TStringEdit::KeyPressed(int key, bool bSysKey)
  142. {
  143. if (!bSysKey) return;
  144. if (key == 13) OnButtonOK (this);
  145. }