UT_Error OXMLi_PackageManager::parseChildByType( GsfInput * parent, OXML_PartType type, OXMLi_StreamListener * pListener) { GsfInput * pInput = getChildByType(parent, type); if(!pInput) return UT_ERROR; return _parseStream( pInput, pListener); }
bool IE_Imp_Object::pasteFromBuffer(PD_DocumentRange * pDocRange, const unsigned char * pData, UT_uint32 lenData, const char * /* encoding */) { UT_return_val_if_fail(getDoc() == pDocRange->m_pDoc,false); UT_return_val_if_fail(pDocRange->m_pos1 == pDocRange->m_pos2,false); ImportStreamClipboard stream(pData, lenData); setClipboard (pDocRange->m_pos1); stream.init(NULL); _parseStream(&stream); return true; }
/* Import Object data from a plain text file \param szFilename Name of file to import Simply fills a UT_byteBuf with the contents of the Object */ UT_Error IE_Imp_Object::_loadFile(GsfInput * fp) { ImportStreamFile * pStream = new ImportStreamFile(fp); UT_Error error; pStream->init(NULL); X_CleanupIfError(error,_parseStream(pStream)); error = UT_OK; Cleanup: delete pStream; return error; }
bool IE_Imp_Text::pasteFromBuffer(PD_DocumentRange * pDocRange, const unsigned char * pData, UT_uint32 lenData, const char *szEncoding) { UT_return_val_if_fail(getDoc() == pDocRange->m_pDoc,false); UT_return_val_if_fail(pDocRange->m_pos1 == pDocRange->m_pos2,false); // Attempt to guess whether we're pasting 8 bit or unicode text if (szEncoding) _setEncoding(szEncoding); else _recognizeEncoding(reinterpret_cast<const char *>(pData), lenData); ImportStreamClipboard stream(pData, lenData); setClipboard (pDocRange->m_pos1); _parseStream(&stream); return true; }
/** * Handle the stream @stream using the listener @listener. * Tries to abstract away how we're actually going to handle * how we read the stream, so that the underlying implementation * can easily adapt or change */ UT_Error IE_Imp_OpenDocument::_handleStream ( GsfInfile* pGsfInfile, const char * pStream, UT_XML::Listener& rListener) { GsfInput* pInput = gsf_infile_child_by_name(pGsfInfile, pStream); UT_return_val_if_fail(pInput, UT_ERROR); // check if the stream is encrypted, and if so, decrypt it std::map<std::string, ODc_CryptoInfo>::iterator pos = m_cryptoInfo.find(pStream); if (pos != m_cryptoInfo.end()) { UT_DEBUGMSG(("Running decrypt on stream %s\n", pStream)); #ifndef HAVE_GCRYPT UT_DEBUGMSG(("Can not decrypt files because of how abiword is compiled!\n")); return UT_ERROR; #endif GsfInput* pDecryptedInput = NULL; UT_Error err = ODc_Crypto::decrypt(pInput, (*pos).second, m_sPassword.utf8_str(), &pDecryptedInput); g_object_unref (G_OBJECT (pInput)); if (err != UT_OK) { UT_DEBUGMSG(("Decryption failed!\n")); return err; } UT_DEBUGMSG(("Stream %s decrypted\n", pStream)); pInput = pDecryptedInput; } // parse the XML stream UT_XML reader; reader.setListener ( &rListener ); UT_Error err = _parseStream (pInput, reader); g_object_unref (G_OBJECT (pInput)); return err; }
/* Import data from a plain text file \param szFilename Name of file to import Each line terminator is taken to be a paragraph break */ UT_Error IE_Imp_Text::_loadFile(GsfInput * fp) { ImportStream *pStream = 0; UT_Error error; // First we try to determine the encoding. if (_recognizeEncoding(fp) == UT_OK) getDoc()->setEncodingName(m_szEncoding); // Call encoding dialog if (!m_bIsEncoded || m_bExplicitlySetEncoding || _doEncodingDialog(m_szEncoding)) { X_CleanupIfError(error,_constructStream(pStream,fp)); X_CleanupIfError(error,_writeHeader(fp)); X_CleanupIfError(error,_parseStream(pStream)); error = UT_OK; } else error = UT_ERROR; Cleanup: delete pStream; return error; }
UT_Error OXMLi_PackageManager::parseDocumentStream() { OXMLi_StreamListener listener; listener.setupStates(DOCUMENT_PART); return _parseStream( _getDocumentStream(), &listener); }
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); }