Subject: Re: Patch: Remember Text Encoding
From: Joaquin Cuenca Abela (e98cuenc@yahoo.com)
Date: Sat Jun 09 2001 - 04:25:59 CDT
It looks good, just a little comment. Can you please
change the const char array by a UT_String?
Good work!
Cheers,
-- Joaquin Cuenca Abela e98cuenc@yahoo.com--- Andrew Dunbar <hippietrail@yahoo.com> wrote: > This is my patch to store the encoding of a document > between > opening and saving so you don't have to use the > encoding dialog > every save. > > This fixes bug 1466. > > Andrew Dunbar. > > -- > http://linguaphile.sourceforge.net> Index: src/af/xap/xp/xad_Document.cpp > =================================================================== > RCS file: > /cvsroot/abi/src/af/xap/xp/xad_Document.cpp,v > retrieving revision 1.17 > diff -u -r1.17 xad_Document.cpp > --- src/af/xap/xp/xad_Document.cpp 2001/05/25 > 18:02:26 1.17 > +++ src/af/xap/xp/xad_Document.cpp 2001/06/08 > 23:31:56 > @@ -28,6 +28,7 @@ > { > m_iRefCount = 1; > m_szFilename = NULL; > + *m_szEncodingName = '\0'; > > // TODO do we need to auto-increase the bucket > count, > // TODO if the ignore list gets long? > @@ -188,4 +189,22 @@ > UT_ASSERT(m_pIgnoreList); > > return true; > +} > + > +// Document-wide Encoding name used for some file > formats (Text, RTF, HTML) > + > +void AD_Document::setEncodingName(const char > *szEncodingName) > +{ > + if (szEncodingName == NULL) > + szEncodingName = ""; > + > + UT_ASSERT(strlen(szEncodingName) < 16); > + > + strncpy(m_szEncodingName,szEncodingName,16); > + m_szEncodingName[15] = 0; > +} > + > +const char * AD_Document::getEncodingName(void) > const > +{ > + return *m_szEncodingName ? m_szEncodingName : 0; > } > Index: src/af/xap/xp/xad_Document.h > =================================================================== > RCS file: > /cvsroot/abi/src/af/xap/xp/xad_Document.h,v > retrieving revision 1.17 > diff -u -r1.17 xad_Document.h > --- src/af/xap/xp/xad_Document.h 2001/05/25 05:52:12 > 1.17 > +++ src/af/xap/xp/xad_Document.h 2001/06/08 23:31:56 > @@ -60,11 +60,15 @@ > bool enumIgnores(UT_uint32 k, const > UT_UCSChar ** pszWord) const; > bool clearIgnores(void); > > + void setEncodingName(const char * > szEncodingName); > + const char * getEncodingName(void) const; > + > protected: > virtual ~AD_Document(); // Use unref() instead. > > int m_iRefCount; > const char * m_szFilename; > + char m_szEncodingName[16]; > > UT_HashTable * m_pIgnoreList; > }; > Index: src/wp/impexp/xp/ie_exp_Text.cpp > =================================================================== > RCS file: > /cvsroot/abi/src/wp/impexp/xp/ie_exp_Text.cpp,v > retrieving revision 1.25 > diff -u -r1.25 ie_exp_Text.cpp > --- src/wp/impexp/xp/ie_exp_Text.cpp 2001/06/07 > 15:52:42 1.25 > +++ src/wp/impexp/xp/ie_exp_Text.cpp 2001/06/08 > 23:33:15 > @@ -104,11 +104,18 @@ > IE_Exp_Text::IE_Exp_Text(PD_Document * pDocument, > bool bEncoded) > : IE_Exp(pDocument) > { > + UT_ASSERT(pDocument); > + > + const char *szEncodingName = > pDocument->getEncodingName(); > + if (!szEncodingName || !*szEncodingName) > + szEncodingName = > XAP_EncodingManager::get_instance()->getNativeEncodingName(); > + > m_error = 0; > m_pListener = NULL; > m_bIsEncoded = bEncoded; > + > // TODO Use persistent document encoding when it > exists > - > _setEncoding(XAP_EncodingManager::get_instance()->getNativeEncodingName()); > + _setEncoding(szEncodingName); > } > > /*! > @@ -255,6 +262,7 @@ > > strcpy(szEnc,s); > _setEncoding((const char *)szEnc); > + m_pDocument->setEncodingName(szEnc); > } > > pDialogFactory->releaseDialog(pDialog); > Index: src/wp/impexp/xp/ie_imp_Text.cpp > =================================================================== > RCS file: > /cvsroot/abi/src/wp/impexp/xp/ie_imp_Text.cpp,v > retrieving revision 1.26 > diff -u -r1.26 ie_imp_Text.cpp > --- src/wp/impexp/xp/ie_imp_Text.cpp 2001/06/07 > 15:52:42 1.26 > +++ src/wp/impexp/xp/ie_imp_Text.cpp 2001/06/08 > 23:33:38 > @@ -292,8 +292,9 @@ > > UT_Error error; > > - // First we need to determine the encoding. > - X_CleanupIfError(error,_recognizeEncoding(fp)); > + // First we try to determine the encoding. > + if (_recognizeEncoding(fp) == UT_OK) > + m_pDocument->setEncodingName(m_szEncoding); > X_CleanupIfError(error,_writeHeader(fp)); > X_CleanupIfError(error,_parseFile(fp)); > > @@ -319,9 +320,16 @@ > IE_Imp_Text::IE_Imp_Text(PD_Document * pDocument, > bool bEncoded) > : IE_Imp(pDocument) > { > + UT_ASSERT(pDocument); > + > + const char *szEncodingName = > pDocument->getEncodingName(); > + if (!szEncodingName || !*szEncodingName) > + szEncodingName = > XAP_EncodingManager::get_instance()->getNativeEncodingName(); > + > m_bIsEncoded = bEncoded; > + > // TODO Use persistent document encoding when it > exists > - > _setEncoding(XAP_EncodingManager::get_instance()->getNativeEncodingName()); > + _setEncoding(szEncodingName); > } > > > /*****************************************************************/ > @@ -491,6 +499,7 @@ > > strcpy(szEnc,s); > _setEncoding((const char *)szEnc); > + m_pDocument->setEncodingName(szEnc); > } > > pDialogFactory->releaseDialog(pDialog); >
__________________________________________________ Do You Yahoo!? Get personalized email addresses from Yahoo! Mail - only $35 a year! http://personal.mail.yahoo.com/
This archive was generated by hypermail 2b25 : Sat Jun 09 2001 - 04:26:22 CDT