/* * 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 "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; } const Editor& editor() const { return *m_editor; } void save(); GUI::Label& filename_label() { return *m_filename_label; } const GUI::Label& filename_label() const { return *m_filename_label; } void set_editor_has_focus(Badge, bool); LanguageClient& language_client(); void set_mode_displayable(); void set_mode_non_displayable(); void set_debug_mode(bool); void set_filename(const String&); const String& filename() const { return m_filename; } 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; private: static constexpr auto untitled_label = "(Untitled)"; EditorWrapper(); void update_title(); String m_filename; RefPtr m_filename_label; RefPtr m_editor; Optional m_project_root; RefPtr m_git_repo; Vector m_hunks; }; }