2020-05-02 07:31:03 +00:00
|
|
|
#include "GuiApplication.h"
|
|
|
|
|
|
|
|
#include "Widget.h"
|
|
|
|
#include "HorizontalSpacer.h"
|
2020-06-20 18:00:06 +00:00
|
|
|
#include "VerticalSpacer.h"
|
2020-06-20 15:34:10 +00:00
|
|
|
#include "TextBox.h"
|
2020-05-02 07:31:03 +00:00
|
|
|
#include "Button.h"
|
|
|
|
#include "Label.h"
|
|
|
|
#include "XcbInterface.h"
|
|
|
|
#include "XcbKeyboard.h"
|
|
|
|
#include "Window.h"
|
|
|
|
#include "TextElement.h"
|
|
|
|
#include "WindowManager.h"
|
2020-06-20 18:00:06 +00:00
|
|
|
#include "TextEditorPanel.h"
|
|
|
|
#include <iostream>
|
2020-05-02 07:31:03 +00:00
|
|
|
|
|
|
|
GuiApplication::GuiApplication()
|
2020-06-20 15:34:10 +00:00
|
|
|
: AbstractDesktopApp(),
|
|
|
|
mMainApplication(),
|
|
|
|
mDesktopManager(DesktopManager::Create())
|
2020-05-02 07:31:03 +00:00
|
|
|
{
|
2020-06-20 15:34:10 +00:00
|
|
|
|
2020-05-02 07:31:03 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
GuiApplication::~GuiApplication()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void GuiApplication::SetMainApplication(MainApplicationPtr app)
|
|
|
|
{
|
2020-06-20 15:34:10 +00:00
|
|
|
mMainApplication = app;
|
2020-05-02 07:31:03 +00:00
|
|
|
}
|
|
|
|
|
2020-06-20 18:00:06 +00:00
|
|
|
void GuiApplication::SetUpWidget()
|
2020-05-02 07:31:03 +00:00
|
|
|
{
|
2020-06-20 15:34:10 +00:00
|
|
|
auto mainWindow = mDesktopManager->GetWindowManager()->GetMainWindow();
|
|
|
|
mainWindow->SetSize(800, 600);
|
2020-05-02 07:31:03 +00:00
|
|
|
|
2020-06-20 18:00:06 +00:00
|
|
|
// Left panel
|
|
|
|
auto textEditorButton = Button::Create();
|
|
|
|
textEditorButton->SetLabel("Text Editor");
|
|
|
|
textEditorButton->SetBackgroundColor(Color::Create(156, 156, 156));
|
|
|
|
|
|
|
|
auto imageEditorButton = Button::Create();
|
|
|
|
imageEditorButton->SetLabel("Image Editor");
|
|
|
|
imageEditorButton->SetBackgroundColor(Color::Create(156, 156, 156));
|
|
|
|
|
|
|
|
auto audioEditorButton = Button::Create();
|
|
|
|
audioEditorButton->SetLabel("Audio Editor");
|
|
|
|
audioEditorButton->SetBackgroundColor(Color::Create(156, 156, 156));
|
|
|
|
|
|
|
|
auto webClientButton = Button::Create();
|
|
|
|
webClientButton->SetLabel("Web Client");
|
|
|
|
webClientButton->SetBackgroundColor(Color::Create(156, 156, 156));
|
|
|
|
|
|
|
|
auto leftSpacer = HorizontalSpacer::Create();
|
|
|
|
leftSpacer->AddWidget(std::move(textEditorButton));
|
|
|
|
leftSpacer->AddWidget(std::move(imageEditorButton));
|
|
|
|
leftSpacer->AddWidget(std::move(audioEditorButton));
|
|
|
|
leftSpacer->AddWidget(std::move(webClientButton));
|
|
|
|
leftSpacer->SetMaxHeight(200);
|
|
|
|
|
|
|
|
// Right panel
|
|
|
|
auto textEditor = TextEditorPanel::Create();
|
|
|
|
textEditor->SetOnSaveFunction([](const std::string& content)
|
|
|
|
{
|
|
|
|
std::cout << content << std::endl;
|
|
|
|
});
|
|
|
|
textEditor->Initialize();
|
|
|
|
|
|
|
|
auto vertSpacer = VerticalSpacer::Create();
|
|
|
|
vertSpacer->AddWidgetWithScale(std::move(leftSpacer), 1);
|
|
|
|
vertSpacer->AddWidgetWithScale(std::move(textEditor), 4);
|
|
|
|
|
|
|
|
mainWindow->AddWidget(std::move(vertSpacer));
|
|
|
|
}
|
2020-05-02 07:31:03 +00:00
|
|
|
|
2020-06-20 18:00:06 +00:00
|
|
|
void GuiApplication::Run()
|
|
|
|
{
|
|
|
|
auto mainWindow = mDesktopManager->GetWindowManager()->GetMainWindow();
|
|
|
|
SetUpWidget();
|
2020-05-02 07:31:03 +00:00
|
|
|
|
2020-06-20 15:34:10 +00:00
|
|
|
mDesktopManager->SetKeyboard(XcbKeyboard::Create());
|
2020-05-02 07:31:03 +00:00
|
|
|
|
2020-06-20 15:34:10 +00:00
|
|
|
bool useOpenGl = false;
|
|
|
|
XcbInterface window_interface;
|
|
|
|
window_interface.SetUseOpenGl(useOpenGl);
|
|
|
|
window_interface.Initialize();
|
|
|
|
window_interface.AddWindow(mainWindow);
|
|
|
|
window_interface.ShowWindow(mainWindow);
|
|
|
|
if(useOpenGl)
|
|
|
|
{
|
|
|
|
window_interface.CreateOpenGlDrawable(mainWindow);
|
|
|
|
}
|
|
|
|
window_interface.Loop(mDesktopManager.get());
|
|
|
|
window_interface.ShutDown();
|
2020-05-02 07:31:03 +00:00
|
|
|
}
|