BsMainEditorWindow.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. 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->addSeparator(L"File", 0);
  26. mMenuBar->addMenuItem(L"File/Exit", nullptr, 0);
  27. TestSuitePtr testSuite = TestSuite::create<EditorTestSuite>();
  28. testSuite->run(ExceptionTestOutput());
  29. }
  30. MainEditorWindow::~MainEditorWindow()
  31. {
  32. mDockManager->closeAll();
  33. GUIElement::destroy(mDockManager);
  34. GUIElement::destroy(mStatusBar);
  35. bs_delete(mMenuBar);
  36. }
  37. void MainEditorWindow::resized()
  38. {
  39. EditorWindowBase::resized();
  40. updateAreas();
  41. }
  42. void MainEditorWindow::updateAreas()
  43. {
  44. UINT32 widgetWidth = (UINT32)std::max(0, (INT32)getWidth() - 2);
  45. UINT32 widgetHeight = (UINT32)std::max(0, (INT32)getHeight() - 2);
  46. UINT32 menuBarHeight = 15;
  47. mMenuBar->setArea(1, 1, widgetWidth, menuBarHeight);
  48. UINT32 statusBarHeight = 20;
  49. UINT32 dockHeight = (UINT32)std::max(0, (INT32)widgetHeight - (INT32)(menuBarHeight + statusBarHeight));
  50. mDockManager->setArea(1, menuBarHeight + 1, widgetWidth, dockHeight);
  51. mStatusBar->setPosition(1, 1 + menuBarHeight + dockHeight);
  52. mStatusBar->setWidth(widgetWidth);
  53. mStatusBar->setHeight(statusBarHeight);
  54. }
  55. void MainEditorWindow::update()
  56. {
  57. mDockManager->update();
  58. }
  59. }