#include "GuiApplication.h" #include "Widget.h" #include "XcbInterface.h" #include "XcbKeyboard.h" #include "Window.h" #include "TextElement.h" #include "WindowManager.h" #include "TextEditorView.h" #include "AudioEditorView.h" #include "ImageEditorView.h" #include "WebClientView.h" #include "TabbedPanelWidget.h" #include "TopBar.h" #include "StatusBar.h" #include "HorizontalSpacer.h" #include GuiApplication::GuiApplication() : AbstractDesktopApp(), mMainApplication(), mDesktopManager(DesktopManager::Create()) { } GuiApplication::~GuiApplication() { } void GuiApplication::SetMainApplication(MainApplicationPtr app) { mMainApplication = app; } void GuiApplication::SetUpWidget() { auto mainWindow = mDesktopManager->GetWindowManager()->GetMainWindow(); mainWindow->SetSize(800, 600); auto tabbedPanel = TabbedPanelWidget::Create(); auto textEditor = TextEditorView::Create(); auto path = mMainApplication->GetCommandLineArgs()->GetLaunchPath(); path /= "out.txt"; textEditor->GetController()->SetSavePath(path); textEditor->GetController()->SetLoadPath(path); textEditor->Initialize(); tabbedPanel->AddPanel(std::move(textEditor), "Text Editor"); auto audioEditor = AudioEditorView::Create(); tabbedPanel->AddPanel(std::move(audioEditor), "Audio Editor"); auto imageEditor = ImageEditorView::Create(); tabbedPanel->AddPanel(std::move(imageEditor), "Image Editor"); auto webClient = WebClientView::Create(); tabbedPanel->AddPanel(std::move(webClient), "Web Client"); auto topBar = TopBar::Create(); auto statusBar = StatusBar::Create(); auto horizontalSpace = HorizontalSpacer::Create(); horizontalSpace->AddWidgetWithScale(std::move(topBar), 1); horizontalSpace->AddWidgetWithScale(std::move(tabbedPanel), 20); horizontalSpace->AddWidgetWithScale(std::move(statusBar), 1); mainWindow->AddWidget(std::move(horizontalSpace)); } void GuiApplication::Run() { auto mainWindow = mDesktopManager->GetWindowManager()->GetMainWindow(); SetUpWidget(); mDesktopManager->SetKeyboard(XcbKeyboard::Create()); bool useOpenGl = true; XcbInterface window_interface; window_interface.SetUseOpenGl(useOpenGl); window_interface.Initialize(mDesktopManager.get()); window_interface.AddWindow(mainWindow, mDesktopManager.get()); window_interface.ShowWindow(mainWindow); if (useOpenGl) { window_interface.CreateOpenGlDrawable(mainWindow); } window_interface.Loop(mDesktopManager.get()); window_interface.ShutDown(); }