BsMainEditorWindow.cpp 1.8 KB

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