-
Notifications
You must be signed in to change notification settings - Fork 47
/
DeclarationSelector.cpp
77 lines (61 loc) · 2.14 KB
/
DeclarationSelector.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include "DeclarationSelector.h"
namespace ui
{
DeclarationSelector::DeclarationSelector(wxWindow* parent, decl::Type declType) :
DeclarationSelector(parent, declType, CreateDefaultColumns())
{}
DeclarationSelector::DeclarationSelector(wxWindow* parent, decl::Type declType,
const wxutil::DeclarationTreeView::Columns& columns) :
wxPanel(parent),
_declType(declType),
_columns(columns),
_treeView(nullptr)
{
SetSizer(new wxBoxSizer(wxVERTICAL));
createTreeView();
}
void DeclarationSelector::createTreeView()
{
_treeView = new wxutil::DeclarationTreeView(this, decl::Type::Material,
_columns, wxDV_NO_HEADER | wxDV_SINGLE);
// Single visible column, containing the directory/decl name and the icon
_treeView->AppendIconTextColumn(_("Value"), _columns.iconAndName.getColumnIndex(),
wxDATAVIEW_CELL_INERT, wxCOL_WIDTH_AUTOSIZE, wxALIGN_NOT, wxDATAVIEW_COL_SORTABLE);
// Use the TreeModel's full string search function
_treeView->AddSearchColumn(_columns.leafName);
// Get selection and connect the changed callback
_treeView->Bind(wxEVT_DATAVIEW_SELECTION_CHANGED, &DeclarationSelector::onTreeViewSelectionChanged, this);
GetSizer()->Add(_treeView, 1, wxEXPAND);
}
wxutil::DeclarationTreeView* DeclarationSelector::GetTreeView() const
{
return _treeView;
}
const wxutil::DeclarationTreeView::Columns& DeclarationSelector::GetColumns() const
{
return _columns;
}
std::string DeclarationSelector::GetSelectedDeclName() const
{
return _treeView->GetSelectedDeclName();
}
void DeclarationSelector::SetSelectedDeclName(const std::string& declName)
{
_treeView->SetSelectedDeclName(declName);
}
void DeclarationSelector::PopulateTreeView(const wxutil::IResourceTreePopulator::Ptr& populator)
{
_treeView->Populate(populator);
}
const wxutil::DeclarationTreeView::Columns& DeclarationSelector::CreateDefaultColumns()
{
static wxutil::DeclarationTreeView::Columns _treeViewColumns;
return _treeViewColumns;
}
void DeclarationSelector::onTreeViewSelectionChanged(wxDataViewEvent& ev)
{
// Invoke the virtual method
onTreeViewSelectionChanged();
ev.Skip();
}
}