12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #include "WindowComposer.h"
- #include "Process.h"
- #include <Widgets/Font.h>
- #include <Widgets/FrameBuffer.h>
- #include <Widgets/WindowManager.h>
- #include <Widgets/RootWidget.h>
- #include <Widgets/EventLoop.h>
- #include <Widgets/MsgBox.h>
- #include <Widgets/TextBox.h>
- #include <Widgets/Label.h>
- #include <Widgets/ListBox.h>
- #include <Widgets/Button.h>
- #include <Widgets/CheckBox.h>
- #include <Widgets/Window.h>
- void WindowComposer_main()
- {
- Font::initialize();
- FrameBuffer::initialize();
- EventLoop::initialize();
- WindowManager::initialize();
- AbstractScreen::initialize();
- auto info = current->get_display_info();
- dbgprintf("Screen is %ux%ux%ubpp\n", info.width, info.height, info.bpp);
- FrameBuffer framebuffer((dword*)info.framebuffer, info.width, info.height);
- RootWidget rw;
- EventLoop loop;
- WindowManager::the().setRootWidget(&rw);
- MsgBox(nullptr, "Serenity Operating System");
- {
- auto* widgetTestWindow = new Window;
- widgetTestWindow->setTitle("Widget test");
- widgetTestWindow->setRect({ 20, 40, 100, 180 });
- auto* widgetTestWindowWidget = new Widget;
- widgetTestWindowWidget->setWindowRelativeRect({ 0, 0, 100, 100 });
- widgetTestWindow->setMainWidget(widgetTestWindowWidget);
- auto* l = new Label(widgetTestWindowWidget);
- l->setWindowRelativeRect({ 0, 0, 100, 20 });
- l->setText("Label");
- auto* b = new Button(widgetTestWindowWidget);
- b->setWindowRelativeRect({ 0, 20, 100, 20 });
- b->setCaption("Button");
- b->onClick = [] (Button& button) {
- printf("Button %p clicked!\n", &button);
- };
- auto* c = new CheckBox(widgetTestWindowWidget);
- c->setWindowRelativeRect({ 0, 40, 100, 20 });
- c->setCaption("CheckBox");
- auto *lb = new ListBox(widgetTestWindowWidget);
- lb->setWindowRelativeRect({ 0, 60, 100, 100 });
- lb->addItem("This");
- lb->addItem("is");
- lb->addItem("a");
- lb->addItem("ListBox");
- auto *tb = new TextBox(widgetTestWindowWidget);
- tb->setWindowRelativeRect({ 0, 160, 100, 20 });
- tb->setText("Hello!");
- tb->setFocus(true);
- tb->onReturnPressed = [] (TextBox& textBox) {
- printf("TextBox %p return pressed: '%s'\n", &textBox, textBox.text().characters());
- MsgBox(nullptr, textBox.text());
- };
- WindowManager::the().setActiveWindow(widgetTestWindow);
- }
- dbgprintf("Entering WindowComposer main loop.\n");
- loop.exec();
- ASSERT_NOT_REACHED();
- }
|