BsMainEditorWindow.cpp 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. #include "BsCoreApplication.h"
  15. namespace bs
  16. {
  17. const UINT32 MainEditorWindow::MENU_BAR_HEIGHT = 50;
  18. const UINT32 MainEditorWindow::STATUS_BAR_HEIGHT = 21;
  19. MainEditorWindow* MainEditorWindow::create(const SPtr<RenderWindow>& renderWindow)
  20. {
  21. return EditorWindowManager::instance().createMain(renderWindow);
  22. }
  23. MainEditorWindow::MainEditorWindow(const SPtr<RenderWindow>& renderWindow)
  24. : EditorWindowBase(renderWindow), mMenuBar(bs_new<GUIMenuBar>(mGUI->_getInternal(), mRenderWindow.get()))
  25. , mDockManager(nullptr)
  26. {
  27. mDockManager = DockManager::create(this);
  28. mGUI->getPanel()->addElement(mDockManager);
  29. mStatusBar = GUIStatusBar::create();
  30. mGUI->getPanel()->addElement(mStatusBar);
  31. updateAreas();
  32. mMenuBar->addMenuItemSeparator("File", 10000);
  33. mMenuBar->addMenuItem("File/Exit",
  34. []()
  35. {
  36. gCoreApplication().quitRequested();
  37. },
  38. 10000);
  39. SPtr<TestSuite> testSuite = TestSuite::create<EditorTestSuite>();
  40. ExceptionTestOutput testOutput;
  41. testSuite->run(testOutput);
  42. mRenderWindow->maximize();
  43. }
  44. MainEditorWindow::~MainEditorWindow()
  45. {
  46. mDockManager->closeAll();
  47. GUIElement::destroy(mDockManager);
  48. GUIElement::destroy(mStatusBar);
  49. bs_delete(mMenuBar);
  50. }
  51. void MainEditorWindow::resized()
  52. {
  53. EditorWindowBase::resized();
  54. updateAreas();
  55. }
  56. void MainEditorWindow::updateAreas()
  57. {
  58. UINT32 widgetWidth = (UINT32)std::max(0, (INT32)getWidth() - 2);
  59. UINT32 widgetHeight = (UINT32)std::max(0, (INT32)getHeight() - 2);
  60. mMenuBar->setArea(1, 1, widgetWidth, MENU_BAR_HEIGHT);
  61. UINT32 dockHeight = (UINT32)std::max(0, (INT32)widgetHeight - (INT32)(MENU_BAR_HEIGHT + STATUS_BAR_HEIGHT));
  62. mDockManager->setArea(1, MENU_BAR_HEIGHT + 1, widgetWidth, dockHeight);
  63. mStatusBar->setPosition(1, 1 + MENU_BAR_HEIGHT + dockHeight);
  64. mStatusBar->setWidth(widgetWidth);
  65. mStatusBar->setHeight(STATUS_BAR_HEIGHT);
  66. }
  67. void MainEditorWindow::update()
  68. {
  69. mDockManager->update();
  70. }
  71. }