void	internalSubsetCB(void* vctx, const xmlChar * name, const xmlChar* externalId, const xmlChar* systemId)
{
  SaxParseContext* sax = SaxParseContext::sctxFromCtx(vctx);
  xmlSAX2InternalSubset(sax->getXmlCtx(), name, externalId, systemId);

  RXMLReader target = sax->_xmlReader;
  target->_startDTD(XML2STR(name), XML2STR(externalId), XML2STR(systemId));
}
void CtrlrPanelCanvas::copyWithChildren(CtrlrComponent *c)
{
	if (c)
	{
		ValueTree clipboardTree("groupTree");
		ValueTree groupTree = c->getOwner().getObjectTree().createCopy();

		Array<CtrlrComponent*> children = c->getOwnedChildren();
		for (int i=0; i<children.size(); i++)
		{
		    ValueTree childTreeCopy = children[i]->getOwner().getObjectTree().createCopy();
		    childTreeCopy.removeProperty(Ids::vstIndex, nullptr);
			groupTree.addChild (childTreeCopy, -1, 0);
		}
		clipboardTree.addChild (groupTree, -1, 0);

		SystemClipboard::copyTextToClipboard (XML2STR(clipboardTree));
	}
}