Ejemplo n.º 1
0
// ============================================================================
// uwTreeList - DataTree
// ============================================================================
void uwTreeList::SetDataTree( unDataTree& tree )
{
	wxLogMessage("SetDataTree");
    DataTree = &tree;
	tree.SetTreeID( wxTreeListCtrl::AddRoot( tree.GetCaption(), -1, -1, tree.NewTreeData() ) );	
	AddPlaceholder( tree );
}
Ejemplo n.º 2
0
void uwTreeList::AddChildren( unDataTree& parent )
{
	//SW_DEF( sw );
	for( unDataTree::iterator it=parent.begin(); it!=parent.end(); ++it )
	{
		unDataTree& tree = *(*it);
        //if( !tree.GetTreeID().IsOk() )
	    tree.SetTreeID( AppendItem( parent.GetTreeID(), tree.GetCaption(), -1, -1, tree.NewTreeData() ) );
		AddPlaceholder( tree );
	}
	//SW_LOGF( sw );
}
Ejemplo n.º 3
0
void uwTreeList::AddChild( unDataTree& parent, unDataTree& child )
{
    child.SetTreeID( AppendItem( parent.GetTreeID(), child.GetCaption(), -1, -1, child.NewTreeData() ) );
    AddPlaceholder( child );
}
Ejemplo n.º 4
0
HRESULT CMenuSFToolbar::FillToolbar(BOOL clearFirst)
{
    HRESULT hr;

    CComPtr<IEnumIDList> eidl;
    hr = m_shellFolder->EnumObjects(GetToolbar(), SHCONTF_FOLDERS | SHCONTF_NONFOLDERS, &eidl);
    if (FAILED_UNEXPECTEDLY(hr))
        return hr;

    HDPA dpaSort = DPA_Create(10);

    LPITEMIDLIST item = NULL;
    hr = eidl->Next(1, &item, NULL);
    while (hr == S_OK)
    {
        if (m_menuBand->_CallCBWithItemPidl(item, 0x10000000, 0, 0) == S_FALSE)
        {
            DPA_AppendPtr(dpaSort, ILClone(item));
        }

        hr = eidl->Next(1, &item, NULL);
    }

    // If no items were added, show the "empty" placeholder
    if (DPA_GetPtrCount(dpaSort) == 0)
    {
        DPA_Destroy(dpaSort);
        return AddPlaceholder();
    }

    TRACE("FillToolbar added %d items to the DPA\n", DPA_GetPtrCount(dpaSort));

    DPA_Sort(dpaSort, PidlListSort, (LPARAM) m_shellFolder.p);

    for (int i = 0; i<DPA_GetPtrCount(dpaSort);)
    {
        PWSTR MenuString;

        INT index = 0;
        INT indexOpen = 0;

        STRRET sr = { STRRET_CSTR, { 0 } };

        item = (LPITEMIDLIST)DPA_GetPtr(dpaSort, i);

        hr = m_shellFolder->GetDisplayNameOf(item, SIGDN_NORMALDISPLAY, &sr);
        if (FAILED_UNEXPECTEDLY(hr))
        {
            DPA_Destroy(dpaSort);
            return hr;
        }

        StrRetToStr(&sr, NULL, &MenuString);

        index = SHMapPIDLToSystemImageListIndex(m_shellFolder, item, &indexOpen);

        LPCITEMIDLIST itemc = item;

        SFGAOF attrs = SFGAO_FOLDER;
        hr = m_shellFolder->GetAttributesOf(1, &itemc, &attrs);

        DWORD_PTR dwData = reinterpret_cast<DWORD_PTR>(item);

        // Fetch next item already, so we know if the current one is the last
        i++;

        AddButton(i, MenuString, attrs & SFGAO_FOLDER, index, dwData, i >= DPA_GetPtrCount(dpaSort));

        CoTaskMemFree(MenuString);
    }

    DPA_Destroy(dpaSort);
    return hr;
}