/* * Copyright (c) 2018-2020, Andreas Kling * Copyright (c) 2022, the SerenityOS developers. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include "Debugger/BreakpointCallback.h" #include "FindWidget.h" #include "Git/GitRepo.h" #include "LanguageClient.h" #include #include #include #include #include #include namespace HackStudio { class Editor; class EditorWrapper : public GUI::Widget { C_OBJECT(EditorWrapper) public: virtual ~EditorWrapper() override = default; Editor& editor() { return *m_editor; } Editor const& editor() const { return *m_editor; } void save(); LanguageClient& language_client(); void set_mode_displayable(); void set_mode_non_displayable(); void set_debug_mode(bool); void set_filename(String const&); String const& filename() const { return m_filename; } String const& filename_title() const { return m_filename_title; } Optional const& project_root() const { return m_project_root; } void set_project_root(String const& project_root); GitRepo const* git_repo() const { return m_git_repo; } void update_diff(); Vector const& hunks() const { return m_hunks; } Function on_change; Function on_tab_close_request; void search_action(); FindWidget const& find_widget() const { return *m_find_widget; } private: static constexpr auto untitled_label = "(Untitled)"sv; EditorWrapper(); void update_title(); String m_filename; String m_filename_title; RefPtr m_editor; RefPtr m_find_widget; Optional m_project_root; RefPtr m_git_repo; Vector m_hunks; }; }