BsMainEditorWindow.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsMainEditorWindow.h"
  4. #include "BsEditorWindowManager.h"
  5. #include "BsDockManager.h"
  6. #include "BsGUIMenuBar.h"
  7. #include "BsCGUIWidget.h"
  8. #include "BsGUIPanel.h"
  9. #include "BsGUIStatusBar.h"
  10. #include "BsEditorTestSuite.h"
  11. #include "BsTestOutput.h"
  12. namespace BansheeEngine
  13. {
  14. const UINT32 MainEditorWindow::MENU_BAR_HEIGHT = 50;
  15. const UINT32 MainEditorWindow::STATUS_BAR_HEIGHT = 21;
  16. MainEditorWindow* MainEditorWindow::create(const RenderWindowPtr& renderWindow)
  17. {
  18. return EditorWindowManager::instance().createMain(renderWindow);
  19. }
  20. MainEditorWindow::MainEditorWindow(const RenderWindowPtr& renderWindow)
  21. :EditorWindowBase(renderWindow), mDockManager(nullptr),
  22. mMenuBar(bs_new<GUIMenuBar>(mGUI->_getInternal(), mRenderWindow.get()))
  23. {
  24. mDockManager = DockManager::create(this);
  25. mGUI->getPanel()->addElement(mDockManager);
  26. mStatusBar = GUIStatusBar::create();
  27. mGUI->getPanel()->addElement(mStatusBar);
  28. updateAreas();
  29. mMenuBar->addMenuItemSeparator(L"File", 10000);
  30. mMenuBar->addMenuItem(L"File/Exit", nullptr, 10000);
  31. TestSuitePtr testSuite = TestSuite::create<EditorTestSuite>();
  32. testSuite->run(ExceptionTestOutput());
  33. }
  34. MainEditorWindow::~MainEditorWindow()
  35. {
  36. mDockManager->closeAll();
  37. GUIElement::destroy(mDockManager);
  38. GUIElement::destroy(mStatusBar);
  39. bs_delete(mMenuBar);
  40. }
  41. void MainEditorWindow::resized()
  42. {
  43. EditorWindowBase::resized();
  44. updateAreas();
  45. }
  46. void MainEditorWindow::updateAreas()
  47. {
  48. UINT32 widgetWidth = (UINT32)std::max(0, (INT32)getWidth() - 2);
  49. UINT32 widgetHeight = (UINT32)std::max(0, (INT32)getHeight() - 2);
  50. mMenuBar->setArea(1, 1, widgetWidth, MENU_BAR_HEIGHT);
  51. UINT32 dockHeight = (UINT32)std::max(0, (INT32)widgetHeight - (INT32)(MENU_BAR_HEIGHT + STATUS_BAR_HEIGHT));
  52. mDockManager->setArea(1, MENU_BAR_HEIGHT + 1, widgetWidth, dockHeight);
  53. mStatusBar->setPosition(1, 1 + MENU_BAR_HEIGHT + dockHeight);
  54. mStatusBar->setWidth(widgetWidth);
  55. mStatusBar->setHeight(STATUS_BAR_HEIGHT);
  56. }
  57. void MainEditorWindow::update()
  58. {
  59. mDockManager->update();
  60. }
  61. }