---------------------------------------------- ResourceView::Init Link everything together - if allowed types is empty every asset type is selectable
| 31 | // - if allowed types is empty every asset type is selectable |
| 32 | // |
| 33 | void ResourceView::Init(std::vector<rttr::type> const& allowedTypes) |
| 34 | { |
| 35 | // attachment to parent widget |
| 36 | m_RefBuilder->get_widget("resource_viewer", m_Attachment); |
| 37 | ET_ASSERT(m_Attachment != nullptr); |
| 38 | |
| 39 | // area for displaying asset widgets |
| 40 | m_RefBuilder->get_widget("resource_view", m_FlowBox); |
| 41 | ET_ASSERT(m_FlowBox != nullptr); |
| 42 | |
| 43 | m_FlowBox->signal_selected_children_changed().connect(sigc::mem_fun(*this, &ResourceView::OnSelectedChildrenChanged)); |
| 44 | |
| 45 | // filtering |
| 46 | m_RefBuilder->get_widget("toolbar", m_Toolbar); // allows detatching the filter and search options and putting them in a toolbar instead |
| 47 | ET_ASSERT(m_Toolbar != nullptr); |
| 48 | |
| 49 | Gtk::MenuButton* filterButton; |
| 50 | m_RefBuilder->get_widget("filter", filterButton); |
| 51 | ET_ASSERT(filterButton != nullptr); |
| 52 | m_TypeFilter.RegisterListener(this); // no need to unregister ourselves because we own it |
| 53 | m_TypeFilter.Init(filterButton, allowedTypes); |
| 54 | |
| 55 | m_RefBuilder->get_widget("search", m_SearchBar); |
| 56 | ET_ASSERT(m_SearchBar != nullptr); |
| 57 | |
| 58 | m_SearchBar->signal_search_changed().connect(sigc::mem_fun(*this, &ResourceView::OnSearchChanged)); |
| 59 | |
| 60 | // toggle view of engine or project resources |
| 61 | m_RefBuilder->get_widget("engine_button", m_EngineButton); |
| 62 | ET_ASSERT(m_EngineButton != nullptr); |
| 63 | m_RefBuilder->get_widget("project_button", m_ProjectButton); |
| 64 | ET_ASSERT(m_ProjectButton != nullptr); |
| 65 | |
| 66 | m_EngineButton->signal_toggled().connect(sigc::mem_fun(*this, &ResourceView::ResourceGroupToggled)); |
| 67 | m_ProjectButton->signal_toggled().connect(sigc::mem_fun(*this, &ResourceView::ResourceGroupToggled)); |
| 68 | if (m_ProjectSelected) |
| 69 | { |
| 70 | m_ProjectButton->set_active(true); |
| 71 | } |
| 72 | else |
| 73 | { |
| 74 | m_EngineButton->set_active(true); |
| 75 | } |
| 76 | |
| 77 | // directory tree |
| 78 | m_RefBuilder->get_widget("directory_tree", m_TreeView); |
| 79 | ET_ASSERT(m_TreeView != nullptr); |
| 80 | |
| 81 | m_TreeModel = Gtk::TreeStore::create(m_Columns); |
| 82 | |
| 83 | m_TreeView->set_model(m_TreeModel); |
| 84 | |
| 85 | m_TreeSelection = m_TreeView->get_selection(); |
| 86 | m_TreeSelection->signal_changed().connect(sigc::mem_fun(*this, &ResourceView::OnDirectorySelectionChanged)); |
| 87 | |
| 88 | m_TreeView->append_column("Directory", m_Columns.m_Name); |
| 89 | |
| 90 | RebuildDirectoryTree(); |
nothing calls this directly
no test coverage detected