Exemple #1
0
void CDuiListBox::LoadItemAttribute(pugi::xml_node xmlNode, LPLBITEM pItem)
{
	pItem->nImage=xmlNode.attribute("img").as_int(pItem->nImage);
	pItem->lParam=xmlNode.attribute("data").as_uint(pItem->lParam);

    pItem->strText =  DUI_CA2T(xmlNode.text().get(), CP_UTF8);
    DuiStringPool::getSingleton().BuildString(pItem->strText);
}
Exemple #2
0
void CDuiMenu::BuildMenu( HMENU menuPopup,pugi::xml_node xmlNode )
{
	pugi::xml_node xmlItem=xmlNode.first_child();

    while(xmlItem)
    {
        if(strcmp("item",xmlItem.name())==0)
        {
            DuiMenuItemData *pdmmi=new DuiMenuItemData;
            pdmmi->hMenu=menuPopup;
			pdmmi->itemInfo.iIcon=xmlItem.attribute("icon").as_int(-1);
			pdmmi->itemInfo.strText=DUI_CA2T(xmlItem.text().get(),CP_UTF8);

            int nID=xmlItem.attribute("id").as_int(0);
            BOOL bCheck=xmlItem.attribute("check").as_bool(false);
			BOOL bRadio=xmlItem.attribute("radio").as_bool(false);
			BOOL bDisable=xmlItem.attribute("disable").as_bool(false);


			pugi::xml_writer_buff writer;
			xmlItem.print(writer);
			CDuiStringW str=DUI_CA2W(CDuiStringA(writer.buffer(),writer.size()),CP_UTF8);

			pugi::xml_node xmlChild=xmlItem.first_child();
			while(xmlChild && xmlChild.type()==pugi::node_pcdata) xmlChild=xmlChild.next_sibling();


			if(!xmlChild)
            {
                pdmmi->nID=nID;
                UINT uFlag=MF_OWNERDRAW;
                if(bCheck) uFlag|=MF_CHECKED;
                if(bDisable) uFlag |= MF_GRAYED;
                if(bRadio) uFlag |= MFT_RADIOCHECK|MF_CHECKED;
                AppendMenu(menuPopup,uFlag,(UINT_PTR)pdmmi->nID,(LPCTSTR)pdmmi);
            }
            else
            {
                HMENU hSubMenu=::CreatePopupMenu();
                pdmmi->nID=(UINT_PTR)hSubMenu;
                UINT uFlag=MF_OWNERDRAW|MF_POPUP;
                if(bDisable) uFlag |= MF_GRAYED;
                AppendMenu(menuPopup,uFlag,(UINT_PTR)hSubMenu,(LPCTSTR)pdmmi);
                BuildMenu(hSubMenu,xmlItem);//build sub menu
            }
            m_arrDmmi.Add(pdmmi);
        }
        else if(strcmp("sep",xmlItem.name())==0)
        {
            AppendMenu(menuPopup,MF_SEPARATOR|MF_OWNERDRAW,(UINT_PTR)0,(LPCTSTR)NULL);
        }
		xmlItem=xmlItem.next_sibling();
    }
}
Exemple #3
0
BOOL DuiResProviderFiles::Init( LPCTSTR pszPath )
{
    CMyBuffer<char>  xmlBuf;
    CDuiStringT strPathIndex=pszPath;
    strPathIndex+=_T("\\");
    strPathIndex+=INDEX_XML;
    FILE *f=_tfopen(strPathIndex,_T("rb"));
    if(!f) return(FALSE);
    int nLen=_filelength(_fileno(f));
    if(nLen>100*1024)
    {
        fclose(f);
        return FALSE;
    }
    xmlBuf.Allocate(nLen);
    if(nLen!=fread(xmlBuf,1,nLen,f))
    {
        fclose(f);
        return FALSE;
    }
    fclose(f);

	pugi::xml_document xmlDoc;
    CDuiStringT strFileName;
	if(!xmlDoc.load_buffer(xmlBuf,xmlBuf.size(),pugi::parse_default,pugi::encoding_utf8)) return FALSE;

	pugi::xml_node xmlNode=xmlDoc.child("resid");
    while(xmlNode)
    {
		DuiResID id(DUI_CA2T(xmlNode.attribute("type").value(),CP_UTF8),xmlNode.attribute("id").as_int(0));
		CDuiStringT strFile=DUI_CA2T(xmlNode.attribute("file").value(),CP_UTF8);
		if(!m_strPath.IsEmpty()) strFile.Format(_T("%s\\%s"),(LPCTSTR)m_strPath,(LPCTSTR)strFile);
		m_mapFiles[id]=strFile;
		xmlNode=xmlNode.next_sibling("resid");
    }

    m_strPath=pszPath;
    return TRUE;
}
Exemple #4
0
BOOL CDuiListBox::Load(pugi::xml_node xmlNode)
{
    __super::Load(xmlNode);

    CDuiStringT strChildSrc = DUI_CA2T(xmlNode.attribute("itemsrc").value(),CP_UTF8);

    if (strChildSrc.IsEmpty())
        return TRUE;

	pugi::xml_document xmlDoc;
	if(!DuiSystem::getSingleton().LoadXmlDocment(xmlDoc,strChildSrc,DUIRES_XML_TYPE)) return FALSE;

    return LoadChildren(xmlDoc.first_child());
}
BOOL DuiStringPool::Init( pugi::xml_node xmlNode )
{
    if (strcmp(xmlNode.name(), "string") != 0)
    {
        DUIASSERT(FALSE);
        return FALSE;
    }
    UINT uStringID = 0;

    for (pugi::xml_node xmlStr=xmlNode.child("s"); xmlStr; xmlStr=xmlStr.next_sibling("s"))
    {
        uStringID=xmlStr.attribute("id").as_int(-1);
        if(uStringID==-1) continue;
        CDuiStringA str=xmlStr.text().get();
        if(str.IsEmpty()) str=xmlStr.attribute("text").value();
        AddKeyObject(uStringID,CDuiStringT(DUI_CA2T(str, CP_UTF8)));
    }
    return TRUE;
}
Exemple #6
0
	BOOL CDuiHeaderCtrl::LoadChildren( pugi::xml_node xmlNode )
	{
		if(!xmlNode || strcmp(xmlNode.name(),"items")!=0)
			return TRUE;
		pugi::xml_node xmlItem=xmlNode.child("item");
		int iOrder=0;
		while(xmlItem)
		{
			DUIHDITEM item={0};
			item.mask=0xFFFFFFFF;
			item.iOrder=iOrder++;
			CDuiStringT strTxt=DUI_CA2T(xmlItem.text().get(),CP_UTF8);
			item.pszText=_tcsdup(strTxt);
			item.cchTextMax=strTxt.GetLength();
			item.cx=xmlItem.attribute("width").as_int(50);
			item.lParam=xmlItem.attribute("userata").as_uint(0);
			item.stFlag=(DUIHDSORTFLAG)xmlItem.attribute("sortFlag").as_uint(ST_NULL);
			m_arrItems.InsertAt(m_arrItems.GetCount(),item);
			xmlItem=xmlItem.next_sibling("item");
		}
		return TRUE;
	}