1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 14:48:14 +00:00

CharacterMap: Add output box for copying arbitrary character sequences

This adds a TextBox along the bottom of the window. Double-clicking on a
character will append it to this box, which you can edit as any other
TextBox, or click the copy button to copy the output to the clipboard.
This commit is contained in:
Sam Atkins 2022-01-11 20:24:11 +00:00 committed by Andreas Kling
parent ff500ffcc4
commit 9ca8428238
3 changed files with 36 additions and 0 deletions

View file

@ -14,6 +14,7 @@
#include <LibGUI/Icon.h>
#include <LibGUI/Label.h>
#include <LibGUI/Menu.h>
#include <LibGUI/TextBox.h>
#include <LibGUI/Toolbar.h>
#include <LibUnicode/CharacterTypes.h>
@ -24,6 +25,8 @@ CharacterMapWidget::CharacterMapWidget()
m_toolbar = find_descendant_of_type_named<GUI::Toolbar>("toolbar");
m_font_name_label = find_descendant_of_type_named<GUI::Label>("font_name");
m_glyph_map = find_descendant_of_type_named<GUI::GlyphMapWidget>("glyph_map");
m_output_box = find_descendant_of_type_named<GUI::TextBox>("output_box");
m_copy_output_button = find_descendant_of_type_named<GUI::Button>("copy_output_button");
m_statusbar = find_descendant_of_type_named<GUI::Statusbar>("statusbar");
m_choose_font_action = GUI::Action::create("Choose Font...", Gfx::Bitmap::try_load_from_file("/res/icons/16x16/app-font-editor.png").release_value_but_fixme_should_propagate_errors(), [&](auto&) {
@ -54,6 +57,17 @@ CharacterMapWidget::CharacterMapWidget()
update_statusbar();
};
m_glyph_map->on_glyph_double_clicked = [&](int code_point) {
StringBuilder builder;
builder.append(m_output_box->text());
builder.append_code_point(code_point);
m_output_box->set_text(builder.string_view());
};
m_copy_output_button->on_click = [&](auto) {
GUI::Clipboard::the().set_plain_text(m_output_box->text());
};
did_change_font();
update_statusbar();
}
@ -77,6 +91,7 @@ void CharacterMapWidget::did_change_font()
{
m_glyph_map->set_font(font());
m_font_name_label->set_text(font().qualified_name());
m_output_box->set_font(font());
}
void CharacterMapWidget::update_statusbar()