/* * 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(ByteString const& repo_root); private: explicit GitWidget(); bool initialize(); bool initialize_if_needed(); void stage_file(ByteString const&); void unstage_file(ByteString const&); void commit(); void show_diff(ByteString const&); ByteString m_repo_root; RefPtr m_unstaged_files; RefPtr m_staged_files; RefPtr m_git_repo; ViewDiffCallback m_view_diff_callback; }; }