/* * Copyright (c) 2020, Itamar S. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include "GitFilesView.h" #include "GitRepo.h" #include #include #include namespace HackStudio { typedef Function ViewDiffCallback; 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(); }; private: explicit GitWidget(const LexicalPath& repo_root); bool initialize(); bool initialize_if_needed(); void stage_file(const LexicalPath&); void unstage_file(const LexicalPath&); void commit(); void show_diff(const LexicalPath&); LexicalPath m_repo_root; RefPtr m_unstaged_files; RefPtr m_staged_files; RefPtr m_git_repo; ViewDiffCallback m_view_diff_callback; }; }