BsMainEditorWindow.cpp 2.5 KB

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