mirror of
https://github.com/RGBCube/serenity
synced 2025-05-28 09:15:07 +00:00
Add a simple MsgBox() :^)
This commit is contained in:
parent
e9e7f7a714
commit
3ebea05996
9 changed files with 89 additions and 0 deletions
59
Widgets/MsgBox.cpp
Normal file
59
Widgets/MsgBox.cpp
Normal file
|
@ -0,0 +1,59 @@
|
|||
#include "MsgBox.h"
|
||||
#include "Font.h"
|
||||
#include "AbstractScreen.h"
|
||||
#include "Window.h"
|
||||
#include "Label.h"
|
||||
#include "Button.h"
|
||||
|
||||
void MsgBox(Window* owner, String&& text)
|
||||
{
|
||||
Font& font = Font::defaultFont();
|
||||
auto screenRect = AbstractScreen::the().rect();
|
||||
|
||||
unsigned textWidth = text.length() * font.glyphWidth() + 8;
|
||||
unsigned textHeight = font.glyphHeight() + 8;
|
||||
unsigned horizontalPadding = 16;
|
||||
unsigned verticalPadding = 16;
|
||||
unsigned buttonWidth = 60;
|
||||
unsigned buttonHeight = 20;
|
||||
unsigned windowWidth = textWidth + horizontalPadding * 2;
|
||||
unsigned windowHeight = textHeight + buttonHeight + verticalPadding * 3;
|
||||
|
||||
Rect windowRect(
|
||||
screenRect.center().x() - windowWidth / 2,
|
||||
screenRect.center().y() - windowHeight / 2,
|
||||
windowWidth,
|
||||
windowHeight
|
||||
);
|
||||
|
||||
Rect buttonRect(
|
||||
windowWidth / 2 - buttonWidth / 2,
|
||||
windowHeight - verticalPadding - buttonHeight,
|
||||
buttonWidth,
|
||||
buttonHeight
|
||||
);
|
||||
|
||||
auto* window = new Window;
|
||||
window->setTitle("MsgBox");
|
||||
window->setRect(windowRect);
|
||||
auto* widget = new Widget;
|
||||
widget->setWindowRelativeRect({ 0, 0, windowWidth, windowHeight });
|
||||
widget->setFillWithBackgroundColor(true);
|
||||
window->setMainWidget(widget);
|
||||
auto* label = new Label(widget);
|
||||
label->setWindowRelativeRect({
|
||||
horizontalPadding,
|
||||
verticalPadding,
|
||||
textWidth,
|
||||
textHeight
|
||||
});
|
||||
label->setText(std::move(text));
|
||||
auto* button = new Button(widget);
|
||||
button->setCaption("OK");
|
||||
button->setWindowRelativeRect(buttonRect);
|
||||
button->onClick = [] (Button& button) {
|
||||
printf("MsgBox button pressed, closing MsgBox :)\n");
|
||||
button.window()->close();
|
||||
};
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue