/* * Copyright (c) 2020, Itamar S. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include "GitFilesView.h" #include "GitRepo.h" #include #include #include namespace HackStudio { using ViewDiffCallback = Function; class GitWidget final : public GUI::Widget { C_OBJECT(GitWidget) public: virtual ~GitWidget() override { } void refresh(); void set_view_diff_callback(ViewDiffCallback callback); bool initialized() const { return !m_git_repo.is_null(); }; void change_repo(DeprecatedString const& repo_root); private: explicit GitWidget(); bool initialize(); bool initialize_if_needed(); void stage_file(DeprecatedString const&); void unstage_file(DeprecatedString const&); void commit(); void show_diff(DeprecatedString const&); DeprecatedString m_repo_root; RefPtr m_unstaged_files; RefPtr m_staged_files; RefPtr m_git_repo; ViewDiffCallback m_view_diff_callback; }; }