void mmCategDialog::fillControls() { m_treeCtrl->DeleteAllItems(); root_ = m_treeCtrl->AddRoot(_("Categories")); selectedItemId_ = root_; m_treeCtrl->SetItemBold(root_, true); m_treeCtrl->SetFocus(); NormalColor_ = m_treeCtrl->GetItemTextColour(root_); bool show_hidden_categs = Model_Setting::instance().GetBoolSetting("SHOW_HIDDEN_CATEGS", true); m_cbShowAll->SetValue(show_hidden_categs); const auto &categories = Model_Category::instance().all(); for (const Model_Category::Data& category : categories) { wxTreeItemId maincat; bool bShow = categShowStatus(category.CATEGID, -1); if (m_cbShowAll->IsChecked() || bShow || category.CATEGID == m_init_selected_categ_id) { maincat = m_treeCtrl->AppendItem(root_, category.CATEGNAME); Model_Subcategory::Data subcat; m_treeCtrl->SetItemData(maincat, new mmTreeItemCateg(category, subcat)); if (!bShow) m_treeCtrl->SetItemTextColour(maincat, wxColour("GREY")); for (const auto &sub_category : Model_Category::sub_category(category)) { bShow = categShowStatus(category.CATEGID, sub_category.SUBCATEGID); if (m_cbShowAll->IsChecked() || bShow || sub_category.SUBCATEGID == m_init_selected_subcateg_id) { wxTreeItemId subcateg = m_treeCtrl->AppendItem(maincat, sub_category.SUBCATEGNAME); m_treeCtrl->SetItemData(subcateg, new mmTreeItemCateg(category, sub_category)); if (!bShow) m_treeCtrl->SetItemTextColour(subcateg, wxColour("GREY")); if (m_categ_id == category.CATEGID && m_subcateg_id == sub_category.SUBCATEGID) selectedItemId_ = subcateg; } } m_treeCtrl->SortChildren(maincat); } } m_treeCtrl->Expand(root_); bool expand_categs_tree = Model_Setting::instance().GetBoolSetting("EXPAND_CATEGS_TREE", false); if (expand_categs_tree) m_treeCtrl->ExpandAll(); m_cbExpand->SetValue(expand_categs_tree); m_treeCtrl->SortChildren(root_); m_treeCtrl->SelectItem(selectedItemId_); m_treeCtrl->EnsureVisible(selectedItemId_); m_buttonSelect->Disable(); m_buttonEdit->Disable(); m_buttonAdd->Enable(); m_buttonRelocate->Enable(m_enable_relocate); setTreeSelection(m_categ_id, m_subcateg_id); }
void mmCategDialog::setTreeSelection(int &category_id, int &subcategory_id) { const auto &categories = Model_Category::instance().find(Model_Category::CATEGID(category_id)); if (!categories.empty()) { Model_Category::Data *category = Model_Category::instance().get(category_id); Model_Subcategory::Data *subcategory = (subcategory_id != -1 ? Model_Subcategory::instance().get(subcategory_id) : 0); wxString categoryName = "", subCategoryName = ""; if (category) categoryName = category->CATEGNAME; if (subcategory) subCategoryName = subcategory->SUBCATEGNAME; setTreeSelection(categoryName, subCategoryName); } }