BsMainEditorWindow.cpp 2.1 KB

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