UIConsoleWidget.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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 "AtomicEditor.h"
  5. #include <TurboBadger/tb_layout.h>
  6. #include <Atomic/Core/Context.h>
  7. #include <Atomic/IO/Log.h>
  8. #include <Atomic/UI/UI.h>
  9. #include "UIListView.h"
  10. #include "UIConsoleWidget.h"
  11. #include "UIMainFrame.h"
  12. #include "UIResourceFrame.h"
  13. #include <Atomic/IO/FileSystem.h>
  14. #include <AtomicJS/Javascript/JSEvents.h>
  15. #include "../AEJavascript.h"
  16. #include "../AEEvents.h"
  17. namespace AtomicEditor
  18. {
  19. ConsoleWidget::ConsoleWidget(Context* context) :
  20. AEWidget(context),
  21. consolelayout_(0)
  22. {
  23. context_->RegisterSubsystem(this);
  24. SubscribeToEvent(E_EDITORSHUTDOWN, HANDLER(ConsoleWidget, HandleEditorShutdown));
  25. UI* tbui = GetSubsystem<UI>();
  26. tbui->LoadResourceFile(delegate_, "AtomicEditor/editor/ui/consolewidget.tb.txt");
  27. consolelayout_ = delegate_->GetWidgetByIDAndType<TBLayout>(TBIDC("consolelayout"));
  28. assert(consolelayout_);
  29. consoleList_ = new ListView(context_, "consolelist");
  30. TBWidgetDelegate* consoleListWD = consoleList_->GetWidgetDelegate();
  31. consoleListWD->SetGravity(WIDGET_GRAVITY_ALL);
  32. consolelayout_->AddChild(consoleListWD);
  33. SubscribeToEvent(E_JSPRINT, HANDLER(ConsoleWidget, HandleMessage));
  34. SubscribeToEvent(E_CONSOLEMESSAGE, HANDLER(ConsoleWidget, HandleMessage));
  35. SubscribeToEvent(E_CONSOLEERRORMESSAGE, HANDLER(ConsoleWidget, HandleMessage));
  36. }
  37. ConsoleWidget::~ConsoleWidget()
  38. {
  39. }
  40. void ConsoleWidget::HandleMessage(StringHash eventType, VariantMap& eventData)
  41. {
  42. if (eventType == E_CONSOLEMESSAGE)
  43. {
  44. using namespace ConsoleMessage;
  45. const String& message = eventData[P_TEXT].GetString();
  46. }
  47. else if (eventType == E_JSPRINT)
  48. {
  49. using namespace JSPrint;
  50. const String& message = eventData[P_TEXT].GetString();
  51. consoleList_->AddItem(message.CString(), NULL, TBID(consoleList_->GetNumItems()));
  52. }
  53. else if (eventType == E_CONSOLEERRORMESSAGE)
  54. {
  55. using namespace ConsoleErrorMessage;
  56. const String& message = eventData[P_TEXT].GetString();
  57. consoleList_->AddItem(message.CString(), NULL, TBID(consoleList_->GetNumItems()));
  58. }
  59. }
  60. bool ConsoleWidget::OnEvent(const TBWidgetEvent &ev)
  61. {
  62. return false;
  63. }
  64. void ConsoleWidget::HandleEditorShutdown(StringHash eventType, VariantMap& eventData)
  65. {
  66. context_->RemoveSubsystem(GetType());
  67. }
  68. }