#include <ie_imp_Text.h>
Public Member Functions | |
IE_Imp_Text (PD_Document *pDocument, bool bEncoded=false) | |
IE_Imp_Text (PD_Document *pDocument, const char *encoding) | |
virtual | ~IE_Imp_Text () |
virtual bool | pasteFromBuffer (PD_DocumentRange *pDocRange, const unsigned char *pData, UT_uint32 lenData, const char *szEncoding=0) |
Protected Member Functions | |
virtual UT_Error | _loadFile (GsfInput *fp) |
UT_Error | _recognizeEncoding (GsfInput *fp) |
UT_Error | _recognizeEncoding (const char *szBuf, UT_uint32 iNumbytes) |
virtual UT_Error | _constructStream (ImportStream *&pStream, GsfInput *fp) |
UT_Error | _writeHeader (GsfInput *fp) |
UT_Error | _parseStream (ImportStream *pStream) |
bool | _doEncodingDialog (const char *szEncoding) |
void | _setEncoding (const char *szEncoding) |
bool | _insertBlock () |
bool | _insertSpan (UT_GrowBuf &b) |
Private Attributes | |
const char * | m_szEncoding |
bool | m_bExplicitlySetEncoding |
bool | m_bIsEncoded |
bool | m_bIs16Bit |
bool | m_bUseBOM |
bool | m_bBigEndian |
bool | m_bBlockDirectionPending |
bool | m_bFirstBlockData |
pf_Frag_Strux * | m_pBlock |
IE_Imp_Text::IE_Imp_Text | ( | PD_Document * | pDocument, | |
bool | bEncoded = false | |||
) |
IE_Imp_Text::IE_Imp_Text | ( | PD_Document * | pDocument, | |
const char * | encoding | |||
) |
References _setEncoding(), m_bExplicitlySetEncoding, and m_bIsEncoded.
IE_Imp_Text::~IE_Imp_Text | ( | ) | [virtual] |
UT_Error IE_Imp_Text::_constructStream | ( | ImportStream *& | pStream, | |
GsfInput * | fp | |||
) | [protected, virtual] |
Create a stream of the appropriate type
pStream | Pointer to created stream | |
fp | File to construct stream from |
Override this virtual function to derive from the text importer
Reimplemented in IE_Imp_ISCII.
References UT_OK.
Referenced by _loadFile().
bool IE_Imp_Text::_doEncodingDialog | ( | const char * | szEncoding | ) | [protected] |
Request file encoding from user
This function should be identical to the one in ie_Exp_Text
References _setEncoding(), gchar, XAP_Dialog_Encoding::getAnswer(), XAP_App::getApp(), XAP_App::getDialogFactory(), IE_Imp::getDoc(), XAP_Dialog_Encoding::getEncoding(), XAP_App::getLastFocussedFrame(), XAP_DialogFactory::releaseDialog(), XAP_DialogFactory::requestDialog(), XAP_Dialog_Encoding::runModal(), s, XAP_Dialog_Encoding::setEncoding(), AD_Document::setEncodingName(), and UT_return_val_if_fail.
Referenced by _loadFile().
bool IE_Imp_Text::_insertBlock | ( | ) | [protected] |
Insert a Block into the document
Uses appropriate function for clipboard or file
References IE_Imp::appendStrux(), IE_Imp::getDoc(), IE_Imp::getDocPos(), pt_PieceTable::getFragments(), pf_Fragments::getLast(), PD_Document::getPieceTable(), PD_Document::getStruxOfTypeFromPosition(), pf_Frag::getType(), IE_Imp::isClipboard(), IE_Imp::isPasting(), m_bBlockDirectionPending, m_bFirstBlockData, m_pBlock, PTX_Block, and UT_return_val_if_fail.
Referenced by _parseStream().
bool IE_Imp_Text::_insertSpan | ( | UT_GrowBuf & | b | ) | [protected] |
Insert a span of text into the document
b | Buffer containing UCS text to insert |
Uses appropriate function for clipboard or file
References IE_Imp::appendSpan(), IE_Imp::appendStruxFmt(), IE_Imp::getDoc(), IE_Imp::getDocPos(), UT_GrowBuf::getLength(), UT_GrowBuf::getPointer(), m_bBlockDirectionPending, m_bFirstBlockData, m_pBlock, PTX_Block, UT_GrowBuf::truncate(), type, UCS_LRM, UCS_RLM, UT_BIDI_IS_RTL, UT_BIDI_IS_STRONG, and UT_bidiGetCharType().
Referenced by _parseStream().
UT_Error IE_Imp_Text::_loadFile | ( | GsfInput * | fp | ) | [protected, virtual] |
UT_Error IE_Imp_Text::_parseStream | ( | ImportStream * | pStream | ) | [protected] |
Parse stream contents into the document
stream | Stream to import from |
This code is used for both files and the clipboard
References _insertBlock(), _insertSpan(), _setEncoding(), UT_GrowBuf::append(), ImportStream::getChar(), UT_GrowBuf::getLength(), IE_Imp::getProperty(), ImportStream::init(), m_bExplicitlySetEncoding, m_szEncoding, UCS_BOM, UCS_CR, UCS_LF, UCS_LINESEP, UCS_PARASEP, UT_ERROR, UT_return_val_if_fail, and X_ReturnNoMemIfError.
Referenced by _loadFile(), and pasteFromBuffer().
Detect encoding of text buffer
pData | Buffer | |
lenData | Length of buffer |
Supports UTF-8 and UCS-2 big and little endian CJK encodings could be added
References IE_Imp_Text_Sniffer::_recognizeUCS2(), IE_Imp_Text_Sniffer::_recognizeUTF8(), _setEncoding(), XAP_EncodingManager::get_instance(), IE_Imp_Text_Sniffer::UE_BigEnd, and IE_Imp_Text_Sniffer::UE_LittleEnd.
UT_Error IE_Imp_Text::_recognizeEncoding | ( | GsfInput * | fp | ) | [protected] |
Detect encoding of text file
fp | File |
Supports UTF-8 and UCS-2 big and little endian CJK encodings could be added
References UT_MIN.
Referenced by _loadFile(), and pasteFromBuffer().
void IE_Imp_Text::_setEncoding | ( | const char * | szEncoding | ) | [protected] |
Set importer's encoding and related members
szEncoding | Encoding to export file into |
Decides endian and BOM policy based on encoding. Set to 0 to handle raw bytes. This function should be identical to the one in IE_Exp_Text.
References XAP_EncodingManager::get_instance(), XAP_EncodingManager::getUCS2BEName(), XAP_EncodingManager::getUCS2LEName(), m_bBigEndian, m_bIs16Bit, m_bUseBOM, and m_szEncoding.
Referenced by _doEncodingDialog(), _parseStream(), _recognizeEncoding(), IE_Imp_ISCII::IE_Imp_ISCII(), IE_Imp_Text(), and pasteFromBuffer().
UT_Error IE_Imp_Text::_writeHeader | ( | GsfInput * | fp | ) | [protected] |
Write header to document
Writes the minimum needed Section and Block before we begin import
References IE_Imp::appendStrux(), IE_Imp::getDoc(), pt_PieceTable::getFragments(), pf_Fragments::getLast(), PD_Document::getPieceTable(), pf_Frag::getType(), m_pBlock, PTX_Block, PTX_Section, UT_return_val_if_fail, and X_ReturnNoMemIfError.
Referenced by _loadFile().
bool IE_Imp_Text::pasteFromBuffer | ( | PD_DocumentRange * | pDocRange, | |
const unsigned char * | pData, | |||
UT_uint32 | lenData, | |||
const char * | szEncoding = 0 | |||
) | [virtual] |
Reimplemented from IE_Imp.
References _parseStream(), _recognizeEncoding(), _setEncoding(), IE_Imp::getDoc(), PD_DocumentRange::m_pDoc, PD_DocumentRange::m_pos1, PD_DocumentRange::m_pos2, IE_Imp::setClipboard(), and UT_return_val_if_fail.
Referenced by AP_UnixApp::pasteFromClipboard(), and AP_CocoaApp::pasteFromClipboard().
bool IE_Imp_Text::m_bBigEndian [private] |
Referenced by _setEncoding().
bool IE_Imp_Text::m_bBlockDirectionPending [private] |
Referenced by _insertBlock(), and _insertSpan().
bool IE_Imp_Text::m_bExplicitlySetEncoding [private] |
Referenced by _loadFile(), _parseStream(), and IE_Imp_Text().
bool IE_Imp_Text::m_bFirstBlockData [private] |
Referenced by _insertBlock(), and _insertSpan().
bool IE_Imp_Text::m_bIs16Bit [private] |
Referenced by _setEncoding().
bool IE_Imp_Text::m_bIsEncoded [private] |
Referenced by _loadFile(), and IE_Imp_Text().
bool IE_Imp_Text::m_bUseBOM [private] |
Referenced by _setEncoding().
pf_Frag_Strux* IE_Imp_Text::m_pBlock [private] |
Referenced by _insertBlock(), _insertSpan(), and _writeHeader().
const char* IE_Imp_Text::m_szEncoding [private] |
Referenced by _loadFile(), _parseStream(), and _setEncoding().