mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-13 11:42:38 +03: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:
parent
ff500ffcc4
commit
9ca8428238
Notes:
sideshowbarker
2024-07-17 20:46:15 +09:00
Author: https://github.com/AtkinsSJ Commit: https://github.com/SerenityOS/serenity/commit/9ca8428238c Pull-request: https://github.com/SerenityOS/serenity/pull/11839
@ -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()
|
||||
|
@ -27,6 +27,8 @@ private:
|
||||
RefPtr<GUI::Toolbar> m_toolbar;
|
||||
RefPtr<GUI::Label> m_font_name_label;
|
||||
RefPtr<GUI::GlyphMapWidget> m_glyph_map;
|
||||
RefPtr<GUI::TextBox> m_output_box;
|
||||
RefPtr<GUI::Button> m_copy_output_button;
|
||||
RefPtr<GUI::Statusbar> m_statusbar;
|
||||
|
||||
RefPtr<GUI::Action> m_choose_font_action;
|
||||
|
@ -38,6 +38,25 @@
|
||||
name: "glyph_map"
|
||||
}
|
||||
|
||||
@GUI::Widget {
|
||||
shrink_to_fit: true
|
||||
|
||||
layout: @GUI::HorizontalBoxLayout {
|
||||
spacing: 4
|
||||
margins: [0, 2, 0, 2]
|
||||
}
|
||||
|
||||
@GUI::TextBox {
|
||||
name: "output_box"
|
||||
}
|
||||
|
||||
@GUI::Button {
|
||||
name: "copy_output_button"
|
||||
icon: "/res/icons/16x16/edit-copy.png"
|
||||
fixed_width: 22
|
||||
}
|
||||
}
|
||||
|
||||
@GUI::Statusbar {
|
||||
name: "statusbar"
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user