mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 15:57:45 +00:00
HexEditor: Make HexEditor::open_new_file
fallible and reduce branching
Returning a `bool` is meaningless, so let's make it more expresive :^)
This commit is contained in:
parent
035d63f528
commit
88cf40179d
3 changed files with 15 additions and 18 deletions
|
@ -49,14 +49,9 @@ HexEditor::HexEditor()
|
||||||
m_blink_timer->start();
|
m_blink_timer->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HexEditor::open_new_file(size_t size)
|
ErrorOr<void> HexEditor::open_new_file(size_t size)
|
||||||
{
|
{
|
||||||
auto maybe_buffer = ByteBuffer::create_zeroed(size);
|
m_document = make<HexDocumentMemory>(TRY(ByteBuffer::create_zeroed(size)));
|
||||||
if (maybe_buffer.is_error()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_document = make<HexDocumentMemory>(maybe_buffer.release_value());
|
|
||||||
set_content_length(m_document->size());
|
set_content_length(m_document->size());
|
||||||
m_position = 0;
|
m_position = 0;
|
||||||
m_cursor_at_low_nibble = false;
|
m_cursor_at_low_nibble = false;
|
||||||
|
@ -66,7 +61,7 @@ bool HexEditor::open_new_file(size_t size)
|
||||||
update();
|
update();
|
||||||
update_status();
|
update_status();
|
||||||
|
|
||||||
return true;
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
void HexEditor::open_file(NonnullRefPtr<Core::File> file)
|
void HexEditor::open_file(NonnullRefPtr<Core::File> file)
|
||||||
|
|
|
@ -33,7 +33,7 @@ public:
|
||||||
virtual ~HexEditor() override = default;
|
virtual ~HexEditor() override = default;
|
||||||
|
|
||||||
size_t buffer_size() const { return m_document->size(); }
|
size_t buffer_size() const { return m_document->size(); }
|
||||||
bool open_new_file(size_t size);
|
ErrorOr<void> open_new_file(size_t size);
|
||||||
void open_file(NonnullRefPtr<Core::File> file);
|
void open_file(NonnullRefPtr<Core::File> file);
|
||||||
void fill_selection(u8 fill_byte);
|
void fill_selection(u8 fill_byte);
|
||||||
Optional<u8> get_byte(size_t position);
|
Optional<u8> get_byte(size_t position);
|
||||||
|
|
|
@ -95,17 +95,19 @@ HexEditorWidget::HexEditorWidget()
|
||||||
m_new_action = GUI::Action::create("New", { Mod_Ctrl, Key_N }, Gfx::Bitmap::try_load_from_file("/res/icons/16x16/new.png"sv).release_value_but_fixme_should_propagate_errors(), [this](const GUI::Action&) {
|
m_new_action = GUI::Action::create("New", { Mod_Ctrl, Key_N }, Gfx::Bitmap::try_load_from_file("/res/icons/16x16/new.png"sv).release_value_but_fixme_should_propagate_errors(), [this](const GUI::Action&) {
|
||||||
String value;
|
String value;
|
||||||
if (request_close() && GUI::InputBox::show(window(), value, "Enter new file size:"sv, "New file size"sv) == GUI::InputBox::ExecResult::OK && !value.is_empty()) {
|
if (request_close() && GUI::InputBox::show(window(), value, "Enter new file size:"sv, "New file size"sv) == GUI::InputBox::ExecResult::OK && !value.is_empty()) {
|
||||||
auto file_size = value.to_int();
|
auto file_size = value.to_uint();
|
||||||
if (file_size.has_value() && file_size.value() > 0) {
|
if (!file_size.has_value()) {
|
||||||
window()->set_modified(false);
|
|
||||||
if (!m_editor->open_new_file(file_size.value())) {
|
|
||||||
GUI::MessageBox::show(window(), "Entered file size is too large."sv, "Error"sv, GUI::MessageBox::Type::Error);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
set_path({});
|
|
||||||
} else {
|
|
||||||
GUI::MessageBox::show(window(), "Invalid file size entered."sv, "Error"sv, GUI::MessageBox::Type::Error);
|
GUI::MessageBox::show(window(), "Invalid file size entered."sv, "Error"sv, GUI::MessageBox::Type::Error);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (auto error = m_editor->open_new_file(file_size.value()); error.is_error()) {
|
||||||
|
GUI::MessageBox::show(window(), String::formatted("Unable to open new file: {}"sv, error.error()), "Error"sv, GUI::MessageBox::Type::Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
set_path({});
|
||||||
|
window()->set_modified(false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue