void PSFTags::AddTag(char *tag_line) { char *eq; // Transform 0x01-0x1F -> 0x20 for(unsigned int i = 0; i < strlen(tag_line); i++) if((unsigned char)tag_line[i] < 0x20) tag_line[i] = 0x20; eq = strchr(tag_line, '='); if(eq) { *eq = 0; MDFN_trim(tag_line); MDFN_trim(eq + 1); for(unsigned int i = 0; i < strlen(tag_line); i++) tag_line[i] = tolower(tag_line[i]); if(TagExists(tag_line)) tags[tag_line] = tags[std::string(tag_line)] + std::string(1, '\n') + std::string(eq + 1); else tags[tag_line] = std::string(eq + 1); } }
void STDMETHODCALLTYPE CScriveToolBar::InjectTag(IDispatch *pDoc, IHTMLDOMNode *parent, CComBSTR tagName, CComBSTR attrName, CComVariant attrValue) { HRESULT hr; CComQIPtr<IHTMLDocument2> spHTMLDoc = pDoc; if (pDoc == NULL) return; //EKI FIX if (TagExists(parent, tagName, attrName, attrValue)) { return; } CComPtr<IHTMLElement> tag; hr = spHTMLDoc->createElement(tagName.m_str, &tag); if (SUCCEEDED(hr)) { hr = tag->setAttribute(attrName.m_str, attrValue); if (SUCCEEDED(hr)) { CComPtr<IHTMLDOMNode> newNode; CComQIPtr<IHTMLDOMNode> tagElement = tag; //ERNES: inserting as first HEAD element CComPtr<IHTMLDOMNode> firstNode; hr = parent->get_firstChild(&firstNode); if (SUCCEEDED(hr)) { VARIANT referenceElementVariant; referenceElementVariant.vt = VT_DISPATCH; referenceElementVariant.pdispVal = (IDispatch *)firstNode; hr = parent->insertBefore(tagElement, referenceElementVariant ,&newNode); } else { VARIANT referenceElementVariant; referenceElementVariant.vt = VT_NULL; hr = parent->insertBefore(tagElement, referenceElementVariant ,&newNode); } } } }