/* * Copyright (c) 2018-2020, Andreas Kling * Copyright (c) 2021, Mustafa Quraish * Copyright (c) 2022, the SerenityOS developers. * Copyright (c) 2022, Timothy Slater * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include "HexEditor.h" #include "ValueInspectorModel.h" #include #include #include #include #include #include #include class HexEditor; class HexEditorWidget final : public GUI::Widget { C_OBJECT(HexEditorWidget) public: virtual ~HexEditorWidget() override = default; void open_file(String const& filename, NonnullOwnPtr); ErrorOr initialize_menubar(GUI::Window&); bool request_close(); private: HexEditorWidget(); void set_path(StringView); void update_title(); void set_search_results_visible(bool visible); void set_value_inspector_visible(bool visible); void update_inspector_values(size_t position); virtual void drag_enter_event(GUI::DragEvent&) override; virtual void drop_event(GUI::DropEvent&) override; RefPtr m_editor; DeprecatedString m_path; DeprecatedString m_name; DeprecatedString m_extension; int m_goto_history { 0 }; DeprecatedString m_search_text; ByteBuffer m_search_buffer; int last_found_index() const { return m_last_found_index == -1 ? 0 : m_last_found_index; } int m_last_found_index { -1 }; RefPtr m_new_action; RefPtr m_open_action; RefPtr m_save_action; RefPtr m_save_as_action; RefPtr m_undo_action; RefPtr m_redo_action; RefPtr m_find_action; RefPtr m_goto_offset_action; RefPtr m_layout_toolbar_action; RefPtr m_layout_search_results_action; RefPtr m_layout_value_inspector_action; RefPtr m_copy_hex_action; RefPtr m_copy_text_action; RefPtr m_copy_as_c_code_action; RefPtr m_fill_selection_action; GUI::ActionGroup m_bytes_per_row_actions; GUI::ActionGroup m_value_inspector_mode_actions; RefPtr m_statusbar; RefPtr m_toolbar; RefPtr m_toolbar_container; RefPtr m_search_results; RefPtr m_search_results_container; RefPtr m_side_panel_container; RefPtr m_value_inspector_container; RefPtr m_value_inspector; bool m_value_inspector_little_endian { true }; bool m_selecting_from_inspector { false }; };