UIWidgetPtr UIWidget::backwardsGetWidgetById(const std::string& id) { UIWidgetPtr widget = getChildById(id); if(!widget) { if(UIWidgetPtr parent = getParent()) widget = parent->backwardsGetWidgetById(id); } return widget; }
UIWidgetPtr UIWidget::recursiveGetChildById(const std::string& id) { UIWidgetPtr widget = getChildById(id); if(!widget) { for(const UIWidgetPtr& child : m_children) { widget = child->recursiveGetChildById(id); if(widget) break; } } return widget; }
/** * Parses the image stream and returns the image data */ UT_ByteBuf* OXMLi_PackageManager::parseImageStream(const char * id) { GsfInput * parent = _getDocumentStream(); GsfInput * stream = getChildById(parent, id); //First, we check if this stream has already been parsed before std::string part_name = gsf_input_name(stream); //TODO: determine if part names are truly unique std::map<std::string, bool>::iterator it; it = m_parsedParts.find(part_name); if (it != m_parsedParts.end() && it->second) { //this stream has already been parsed successfully return NULL; } UT_ByteBuf* buffer = new UT_ByteBuf(); buffer->insertFromInput(0, stream); g_object_unref (G_OBJECT (stream)); m_parsedParts[part_name] = true; return buffer; }
UT_Error OXMLi_PackageManager::parseChildById( GsfInput * parent, const char * id, OXMLi_StreamListener * pListener) { GsfInput * pInput = getChildById(parent, id); UT_return_val_if_fail(pInput != NULL, UT_ERROR); return _parseStream( pInput, pListener); }