mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 21:07:35 +00:00
HexEditor: Added fill selection action.
Added the ability to fill the current selection with a given byte.
This commit is contained in:
parent
f947353a56
commit
c77fe5161c
3 changed files with 23 additions and 0 deletions
|
@ -44,6 +44,20 @@ void HexEditor::set_buffer(const ByteBuffer& buffer)
|
||||||
update_status();
|
update_status();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HexEditor::fill_selection(u8 fill_byte)
|
||||||
|
{
|
||||||
|
if (m_selection_start == -1 || m_selection_end == -1 || (m_selection_end - m_selection_start) < 0 || m_buffer.is_empty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (int i = m_selection_start; i <= m_selection_end; i++) {
|
||||||
|
m_tracked_changes.set(i, m_buffer.data()[i]);
|
||||||
|
m_buffer.data()[i] = fill_byte;
|
||||||
|
}
|
||||||
|
|
||||||
|
update();
|
||||||
|
did_change();
|
||||||
|
}
|
||||||
|
|
||||||
void HexEditor::set_position(int position)
|
void HexEditor::set_position(int position)
|
||||||
{
|
{
|
||||||
if (position > m_buffer.size())
|
if (position > m_buffer.size())
|
||||||
|
|
|
@ -22,6 +22,7 @@ public:
|
||||||
void set_readonly(bool);
|
void set_readonly(bool);
|
||||||
|
|
||||||
void set_buffer(const ByteBuffer&);
|
void set_buffer(const ByteBuffer&);
|
||||||
|
void fill_selection(u8 fill_byte);
|
||||||
bool write_to_file(const StringView& path);
|
bool write_to_file(const StringView& path);
|
||||||
|
|
||||||
bool copy_selected_text_to_clipboard();
|
bool copy_selected_text_to_clipboard();
|
||||||
|
|
|
@ -147,6 +147,14 @@ HexEditorWidget::HexEditorWidget()
|
||||||
});
|
});
|
||||||
|
|
||||||
auto edit_menu = make<GMenu>("Edit");
|
auto edit_menu = make<GMenu>("Edit");
|
||||||
|
edit_menu->add_action(GAction::create("Fill selection...", [&](const GAction&) {
|
||||||
|
auto input_box = GInputBox::construct("Fill byte (hex):", "Fill Selection", this);
|
||||||
|
if (input_box->exec() == GInputBox::ExecOK && !input_box->text_value().is_empty()) {
|
||||||
|
auto fill_byte = strtol(input_box->text_value().characters(), nullptr, 16);
|
||||||
|
m_editor->fill_selection(fill_byte);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
edit_menu->add_separator();
|
||||||
edit_menu->add_action(*m_goto_decimal_offset_action);
|
edit_menu->add_action(*m_goto_decimal_offset_action);
|
||||||
edit_menu->add_action(*m_goto_hex_offset_action);
|
edit_menu->add_action(*m_goto_hex_offset_action);
|
||||||
edit_menu->add_separator();
|
edit_menu->add_separator();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue