44 lines
1.2 KiB
C++
44 lines
1.2 KiB
C++
|
|
#include "widgets/mainwindow/mainwindow.h"
|
|
#include "widgets/menubar/menubar.h"
|
|
#include "widgets/toolbar/toolbar.h"
|
|
#include "widgets/statusbar/statusbar.h"
|
|
|
|
MainWindow::MainWindow(RenderAPI api) : Widget(nullptr, WidgetType::Window, api)
|
|
{
|
|
MenubarWidget = new Menubar(this);
|
|
TopToolbarWidget = new Toolbar(this);
|
|
TopToolbarWidget->SetDirection(ToolbarDirection::Horizontal);
|
|
LeftToolbarWidget = new Toolbar(this);
|
|
LeftToolbarWidget->SetDirection(ToolbarDirection::Vertical);
|
|
StatusbarWidget = new Statusbar(this);
|
|
}
|
|
|
|
MainWindow::~MainWindow()
|
|
{
|
|
}
|
|
|
|
void MainWindow::SetCentralWidget(Widget* widget)
|
|
{
|
|
if (CentralWidget != widget)
|
|
{
|
|
delete CentralWidget;
|
|
CentralWidget = widget;
|
|
if (CentralWidget)
|
|
CentralWidget->SetParent(this);
|
|
OnGeometryChanged();
|
|
}
|
|
}
|
|
|
|
void MainWindow::OnGeometryChanged()
|
|
{
|
|
Size s = GetSize();
|
|
|
|
MenubarWidget->SetFrameGeometry(0.0, 0.0, s.width, 32.0);
|
|
TopToolbarWidget->SetFrameGeometry(0.0, 32.0, s.width, 32.0);
|
|
LeftToolbarWidget->SetFrameGeometry(0.0, 64.0, 32.0, s.height - 64.0);
|
|
StatusbarWidget->SetFrameGeometry(0.0, s.height - 32.0, s.width, 32.0);
|
|
|
|
if (CentralWidget)
|
|
CentralWidget->SetFrameGeometry(32.0, 64.0, s.width - 32.0, s.height - 64.0 - 32.0);
|
|
}
|