bool wxGxContentView::AddObject(wxGxObject* const pObject)
{
    wxCriticalSectionLocker locker(m_CritSectCont);
    if(pObject == NULL)
		return false;

    //check doubles
	for(long i = 0; i < GetItemCount(); ++i)
	{
		LPITEMDATA pItemData = (LPITEMDATA)GetItemData(i);
		if(pItemData == NULL)
			continue;
        if(pItemData->nObjectID == pObject->GetId())
			return false;
    }

    //wxLogDebug(wxT("wxGxContentView::AddObject %d '%s'"), pObject->GetId(), pObject->GetFullName());
    IGxObjectUI* pObjUI =  dynamic_cast<IGxObjectUI*>(pObject);
	wxIcon icon_small, icon_large;
	if(pObjUI != NULL)
	{
		icon_small = pObjUI->GetSmallImage();
		icon_large = pObjUI->GetLargeImage();
	}

	int pos = GetIconPos(icon_small, icon_large);

	LPITEMDATA pData = new _itemdata;
	pData->nObjectID = pObject->GetId();
	pData->iImageIndex = pos;

    wxString sName;
    if(m_pCatalog->GetShowExt())
        sName = pObject->GetName();
    else
        sName = pObject->GetBaseName();

	wxString sType = pObject->GetCategory();

	long ListItemID = InsertItem(0, sName, pos);
	if(m_current_style == enumGISCVReport)
	{
		SetItem(ListItemID, 1, sType);
        IGxDataset* pDSet = dynamic_cast<IGxDataset*>(pObject);
        if(pDSet)
        {
            wxCriticalSectionLocker locker(m_CritSectFillMeta);
            m_anFillMetaIDs.Add(pObject->GetId());
        }
	}
	SetItemPtrData(ListItemID, (wxUIntPtr) pData);

    return true;
}
示例#2
0
void CFriendListCtrl::UpdateFriend(CFriend* toupdate)
{
	if (!toupdate) {
		return;
	}

	sint32 itemnr = FindItem(-1, reinterpret_cast<wxUIntPtr>(toupdate));
	if (itemnr == -1) {
		itemnr = InsertItem(GetItemCount(), wxEmptyString);
		SetItemPtrData(itemnr, reinterpret_cast<wxUIntPtr>(toupdate));
	}

	SetItem(itemnr, 0, toupdate->GetName());
	SetItemTextColour(itemnr, toupdate->GetLinkedClient().IsLinked() ? *wxBLUE : *wxBLACK);
}
示例#3
0
void CSharedFilesCtrl::DoShowFile(CKnownFile* file, bool batch)
{
	wxUIntPtr ptr = reinterpret_cast<wxUIntPtr>(file);
	if ((!batch) && (FindItem(-1, ptr) > -1)) {
		return;
	}
	
	const long insertPos = (batch ? GetItemCount() : GetInsertPos(ptr));

	long newitem = InsertItem(insertPos, wxEmptyString);
	SetItemPtrData( newitem, ptr );

	if (!batch) {	
		ShowFilesCount();
	}
}
示例#4
0
void ChangeIconDialog::InstIconListCtrl::UpdateItems()
{
	this->ClearAll();
	auto iconList = InstIconList::Instance();
	wxImageList *imgList = iconList->CreateImageList();
	AssignImageList(imgList, wxIMAGE_LIST_NORMAL);
	SetImageList(imgList, wxIMAGE_LIST_SMALL);
	
	const InstIconMap &iconMap = iconList->GetIconMap();
	int i = 0;
	for (InstIconMap::const_iterator iter = iconMap.begin(); iter != iconMap.end(); ++iter)
	{
		wxString key = iter->first;
		auto & icon = iter->second;
		InsertItem(i, icon.m_name, i);
		SetItemPtrData(i, (wxUIntPtr) &icon);
		i++;
	}
	SortItems(IconSortPredicate,0);
}
示例#5
0
bool ListCtrlImproved::SetItemClientData(long item, wxClientData* clientData)
{
	return SetItemPtrData(item, (wxUIntPtr) clientData);
}