UIProgramOutput.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  2. // Please see LICENSE.md in repository root for license information
  3. // https://github.com/AtomicGameEngine/AtomicGameEngine
  4. #include <TurboBadger/tb_window.h>
  5. #include <TurboBadger/tb_editfield.h>
  6. #include "AtomicEditor.h"
  7. #include <Atomic/Core/Context.h>
  8. #include <Atomic/UI/UI.h>
  9. #include "AEEvents.h"
  10. #include "UIProgramOutput.h"
  11. namespace AtomicEditor
  12. {
  13. // UINewFolder------------------------------------------------
  14. UIProgramOutput::UIProgramOutput(Context* context):
  15. UIModalOpWindow(context)
  16. {
  17. UI* tbui = GetSubsystem<UI>();
  18. window_->SetText("Program Output");
  19. tbui->LoadResourceFile(window_->GetContentRoot(), "AtomicEditor/editor/ui/programoutput.tb.txt");
  20. output_ = window_->GetContentRoot()->GetWidgetByIDAndType<TBEditField>(TBIDC("output"));
  21. assert(output_);
  22. window_->ResizeToFitContent();
  23. Center();
  24. }
  25. UIProgramOutput::~UIProgramOutput()
  26. {
  27. }
  28. void UIProgramOutput::HandleEvent(StringHash eventType, VariantMap& eventData)
  29. {
  30. if (eventType == E_SUBPROCESSOUTPUT)
  31. {
  32. String text = eventData[SubprocessOutput::P_TEXT].GetString();
  33. TBStr tbText;
  34. output_->GetText(tbText);
  35. tbText.Append(text.CString());
  36. output_->SetText(tbText);
  37. output_->ScrollTo(0, 0xffffff);
  38. }
  39. else if (eventType == E_SUBPROCESSCOMPLETE)
  40. {
  41. }
  42. }
  43. void UIProgramOutput::OutputText(const String& text)
  44. {
  45. TBStr tbText;
  46. output_->GetText(tbText);
  47. tbText.Append(text.CString());
  48. output_->SetText(tbText);
  49. output_->ScrollTo(0, 0xffffff);
  50. }
  51. void UIProgramOutput::SetSubprocess(Object* subprocess)
  52. {
  53. UnsubscribeFromAllEvents();
  54. SubscribeToEvent(subprocess, E_SUBPROCESSOUTPUT, HANDLER(UIProgramOutput, HandleEvent));
  55. SubscribeToEvent(subprocess, E_SUBPROCESSCOMPLETE, HANDLER(UIProgramOutput, HandleEvent));
  56. }
  57. bool UIProgramOutput::OnEvent(const TBWidgetEvent &ev)
  58. {
  59. UIModalOps* ops = GetSubsystem<UIModalOps>();
  60. if (ev.type == EVENT_TYPE_CLICK)
  61. {
  62. if (ev.target->GetID() == TBIDC("create"))
  63. {
  64. ops->Hide();
  65. return true;
  66. }
  67. if (ev.target->GetID() == TBIDC("ok"))
  68. {
  69. ops->Hide();
  70. return true;
  71. }
  72. if (ev.target->GetID() == TBIDC("cancel"))
  73. {
  74. ops->Hide();
  75. return true;
  76. }
  77. }
  78. return false;
  79. }
  80. }