| 342 | |
| 343 | |
| 344 | void CVegetationPanel::AddObjectToTree( CVegetationObject *object,bool bExpandCategory ) |
| 345 | { |
| 346 | CString str; |
| 347 | char filename[_MAX_PATH]; |
| 348 | |
| 349 | std::map<CString,HTREEITEM>::iterator cit; |
| 350 | CString category = object->GetCategory(); |
| 351 | |
| 352 | HTREEITEM hRoot = TVI_ROOT; |
| 353 | cit = m_categoryMap.find(category); |
| 354 | if (cit != m_categoryMap.end()) |
| 355 | { |
| 356 | hRoot = cit->second; |
| 357 | } |
| 358 | if (hRoot == TVI_ROOT) |
| 359 | { |
| 360 | hRoot = m_objectsTree.InsertItem( category,0,1 ); |
| 361 | m_objectsTree.SetItemData( hRoot,(DWORD_PTR)0 ); |
| 362 | m_objectsTree.SetItemState(hRoot, TVIS_BOLD, TVIS_BOLD); |
| 363 | m_categoryMap[category] = hRoot; |
| 364 | } |
| 365 | |
| 366 | // Add new category item. |
| 367 | _splitpath( object->GetFileName(),0,0,filename,0 ); |
| 368 | str.Format( "%s (%d)",filename,object->GetNumInstances() ); |
| 369 | HTREEITEM hItem = m_objectsTree.InsertItem( str,2,3,hRoot ); |
| 370 | m_objectsTree.SetItemData( hItem,(DWORD_PTR)object ); |
| 371 | m_objectsTree.SetCheck( hItem,!object->IsHidden() ); |
| 372 | |
| 373 | if (hRoot != TVI_ROOT) |
| 374 | { |
| 375 | if (bExpandCategory) |
| 376 | m_objectsTree.Expand(hRoot,TVE_EXPAND); |
| 377 | |
| 378 | // Determine check state of category. |
| 379 | std::vector<CVegetationObject*> objects; |
| 380 | GetObjectsInCategory( category,objects ); |
| 381 | bool anyChecked = false; |
| 382 | for (int i = 0; i < objects.size(); i++) |
| 383 | { |
| 384 | if (!objects[i]->IsHidden()) |
| 385 | anyChecked = true; |
| 386 | } |
| 387 | m_objectsTree.SetCheck( hRoot,anyChecked ); |
| 388 | } |
| 389 | } |
| 390 | |
| 391 | void CVegetationPanel::UpdateObjectInTree( CVegetationObject *object,bool bUpdateInfo ) |
| 392 | { |
nothing calls this directly
no test coverage detected