BsMainEditorWindow.cpp 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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 "BsGUIStatusBar.h"
  8. #include "BsEditorTestSuite.h"
  9. #include "BsTestOutput.h"
  10. namespace BansheeEngine
  11. {
  12. MainEditorWindow* MainEditorWindow::create(const RenderWindowPtr& renderWindow)
  13. {
  14. return EditorWindowManager::instance().createMain(renderWindow);
  15. }
  16. MainEditorWindow::MainEditorWindow(const RenderWindowPtr& renderWindow)
  17. :EditorWindowBase(renderWindow), mDockManager(nullptr),
  18. mMenuBar(bs_new<GUIMenuBar>(mGUI.get(), mRenderWindow.get()))
  19. {
  20. mDockManager = DockManager::create(this);
  21. mGUI->getPanel()->addElement(mDockManager);
  22. mStatusBar = GUIStatusBar::create();
  23. mGUI->getPanel()->addElement(mStatusBar);
  24. updateAreas();
  25. mMenuBar->addMenuItem(L"File/New project", nullptr, 100);
  26. mMenuBar->addMenuItem(L"File/Open project", nullptr, 100);
  27. mMenuBar->addSeparator(L"File", 0);
  28. mMenuBar->addMenuItem(L"File/Exit", nullptr, 0);
  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. UINT32 menuBarHeight = 15;
  49. mMenuBar->setArea(1, 1, widgetWidth, menuBarHeight);
  50. UINT32 statusBarHeight = 20;
  51. UINT32 dockHeight = (UINT32)std::max(0, (INT32)widgetHeight - (INT32)(menuBarHeight + statusBarHeight));
  52. mDockManager->setArea(1, menuBarHeight + 1, widgetWidth, dockHeight);
  53. mStatusBar->setPosition(1, 1 + menuBarHeight + dockHeight);
  54. mStatusBar->setWidth(widgetWidth);
  55. mStatusBar->setHeight(statusBarHeight);
  56. }
  57. void MainEditorWindow::update()
  58. {
  59. mDockManager->update();
  60. }
  61. }