1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 23:47:45 +00:00

Add a little About app and hook it up to the system menu's "About..." entry.

Added icons and customizable text alignment to GLabel.
This commit is contained in:
Andreas Kling 2019-02-12 15:23:07 +01:00
parent d6326d6c2e
commit d74b131c27
11 changed files with 118 additions and 2 deletions

3
Applications/About/.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
*.o
*.d
About

View file

@ -0,0 +1,34 @@
OBJS = \
main.o
APP = About
ARCH_FLAGS =
STANDARD_FLAGS = -std=c++17 -nostdinc++ -nostdlib -nostdinc
USERLAND_FLAGS = -ffreestanding -fno-stack-protector -fno-ident
WARNING_FLAGS = -Wextra -Wall -Wundef -Wcast-qual -Wwrite-strings
FLAVOR_FLAGS = -march=i386 -m32 -fno-exceptions -fno-rtti -fmerge-all-constants -fno-unroll-loops -fno-pie -fno-pic
OPTIMIZATION_FLAGS = -Oz -fno-asynchronous-unwind-tables
INCLUDE_FLAGS = -I../.. -I. -I../../LibC
DEFINES = -DSERENITY -DSANITIZE_PTRS -DUSERLAND
CXXFLAGS = -MMD -MP $(WARNING_FLAGS) $(OPTIMIZATION_FLAGS) $(USERLAND_FLAGS) $(FLAVOR_FLAGS) $(ARCH_FLAGS) $(STANDARD_FLAGS) $(INCLUDE_FLAGS) $(DEFINES)
CXX = clang
LD = ld
AR = ar
LDFLAGS = -static --strip-debug -melf_i386 -e _start --gc-sections
all: $(APP)
$(APP): $(OBJS)
$(LD) -o $(APP) $(LDFLAGS) $(OBJS) ../../LibGUI/LibGUI.a ../../LibC/LibC.a
.cpp.o:
@echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $<
-include $(OBJS:%.o=%.d)
clean:
@echo "CLEAN"; rm -f $(APPS) $(OBJS) *.d

View file

@ -0,0 +1,47 @@
#include <LibGUI/GApplication.h>
#include <LibGUI/GWindow.h>
#include <LibGUI/GLabel.h>
#include <LibGUI/GButton.h>
#include <sys/utsname.h>
int main(int argc, char** argv)
{
GApplication app(argc, argv);
auto* window = new GWindow;
window->set_title("About Serenity");
window->set_rect(362, 284, 240, 130);
window->set_should_exit_app_on_close(true);
auto* widget = new GWidget;
window->set_main_widget(widget);
auto* icon_label = new GLabel(widget);
icon_label->set_icon(GraphicsBitmap::load_from_file("/res/icons/Serenity.rgb", { 32, 32 }));
icon_label->set_relative_rect(
widget->rect().center().x() - 16,
10,
32, 32);
auto* label = new GLabel(widget);
label->set_text("Serenity Operating System");
label->set_relative_rect(0, 50, widget->width(), 20);
utsname uts;
int rc = uname(&uts);
ASSERT(rc == 0);
auto* version_label = new GLabel(widget);
version_label->set_text(String::format("Version %s", uts.release));
version_label->set_relative_rect(0, 70, widget->width(), 20);
auto* quit_button = new GButton(widget);
quit_button->set_caption("Okay");
quit_button->set_relative_rect(80, 100, widget->width() - 160, 20);
quit_button->on_click = [] (GButton&) {
GApplication::the().exit(0);
};
window->show();
return app.exec();
}

View file

@ -42,6 +42,7 @@ FontEditorWidget::FontEditorWidget(const String& path, RetainPtr<Font>&& edited_
};
auto* info_label = new GLabel(this);
info_label->set_text_alignment(TextAlignment::CenterLeft);
info_label->set_relative_rect({ 5, 110, 100, 20 });
auto* demo_label_1 = new GLabel(this);