KiCad PCB EDA Suite
Loading...
Searching...
No Matches
project_tree.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2010-2014 Jean-Pierre Charras
5 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 */
20
21#ifndef PROJECT_TREE_H
22#define PROJECT_TREE_H
23
24#include <memory>
25
27
28#include <wx/treectrl.h>
29
30#include "tree_file_type.h"
31
33struct git_repository;
34
38class PROJECT_TREE : public wxTreeCtrl
39{
40 DECLARE_DYNAMIC_CLASS( PROJECT_TREE )
41
42private:
44 wxImageList* m_statusImageList;
45 std::unique_ptr<KIGIT_COMMON> m_gitCommon;
46
47public:
49
52
53 void LoadIcons();
54
55 void GetItemsRecursively( const wxTreeItemId& aParentId, std::vector<wxTreeItemId>& aItems );
56
57 void SetGitRepo( git_repository* aRepo ) { m_gitCommon->SetRepo( aRepo ); }
58 git_repository* GetGitRepo() const { return m_gitCommon->GetRepo(); }
59
60 KIGIT_COMMON* GitCommon() const { return m_gitCommon.get(); }
61
62 std::unique_ptr<KIGIT_COMMON> TakeGitCommon()
63 {
64 auto old = std::move( m_gitCommon );
65 m_gitCommon = std::make_unique<KIGIT_COMMON>( nullptr );
66 return old;
67 }
68
69private:
70 /* overridden sort function */
71 int OnCompareItems( const wxTreeItemId& item1, const wxTreeItemId& item2 ) override;
72};
73
74#endif // PROJECT_TREE_H
PROJECT_TREE_PANE Window to display the tree files.
PROJECT_TREE_PANE * m_projectTreePane
git_repository * GetGitRepo() const
void GetItemsRecursively(const wxTreeItemId &aParentId, std::vector< wxTreeItemId > &aItems)
std::unique_ptr< KIGIT_COMMON > TakeGitCommon()
KIGIT_COMMON * GitCommon() const
int OnCompareItems(const wxTreeItemId &item1, const wxTreeItemId &item2) override
wxImageList * m_statusImageList
PROJECT_TREE(PROJECT_TREE_PANE *parent)
std::unique_ptr< KIGIT_COMMON > m_gitCommon
void SetGitRepo(git_repository *aRepo)
PROJECT_TREE_PANE * GetProjectTreePane() const