summaryrefslogtreecommitdiff
path: root/editeng
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@gmail.com>2013-08-30 23:40:52 -0400
committerKohei Yoshida <kohei.yoshida@gmail.com>2013-09-01 14:48:48 -0400
commit547f4fec93a023ff244e3bf509baf4b8001effa0 (patch)
treebb77beb1224c111fe9eef04cd4300a187906323e /editeng
parent4bc3a58a648f6c0ce95b4eb41f2cbf46175629ed (diff)
First step toward showing mis-spelled words without modifying cells.
There are still tons of problems to fix. Change-Id: Icae6e3d2c9b8b2266724d8d068abbab8acae96da
Diffstat (limited to 'editeng')
-rw-r--r--editeng/source/editeng/editeng.cxx10
-rw-r--r--editeng/source/editeng/edtspell.cxx10
-rw-r--r--editeng/source/editeng/edtspell.hxx3
-rw-r--r--editeng/source/editeng/impedit.hxx8
-rw-r--r--editeng/source/editeng/impedit4.cxx34
-rw-r--r--editeng/source/editeng/misspellrange.cxx3
6 files changed, 68 insertions, 0 deletions
diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx
index 95a7ac28ae0f..4e3407145044 100644
--- a/editeng/source/editeng/editeng.cxx
+++ b/editeng/source/editeng/editeng.cxx
@@ -2284,6 +2284,16 @@ void EditEngine::SetHyphenator( Reference< XHyphenator > & xHyph )
pImpEditEngine->SetHyphenator( xHyph );
}
+void EditEngine::GetAllMisspellRanges( std::vector<editeng::MisspellRanges>& rRanges ) const
+{
+ pImpEditEngine->GetAllMisspellRanges(rRanges);
+}
+
+void EditEngine::SetAllMisspellRanges( const std::vector<editeng::MisspellRanges>& rRanges )
+{
+ pImpEditEngine->SetAllMisspellRanges(rRanges);
+}
+
void EditEngine::SetForbiddenCharsTable( rtl::Reference<SvxForbiddenCharactersTable> xForbiddenChars )
{
DBG_CHKTHIS( EditEngine, 0 );
diff --git a/editeng/source/editeng/edtspell.cxx b/editeng/source/editeng/edtspell.cxx
index 6d7bcd188aa6..6c2fdf741e09 100644
--- a/editeng/source/editeng/edtspell.cxx
+++ b/editeng/source/editeng/edtspell.cxx
@@ -207,6 +207,16 @@ WrongList::WrongList(const WrongList& r) :
WrongList::~WrongList() {}
+const std::vector<editeng::MisspellRange>& WrongList::GetRanges() const
+{
+ return maRanges;
+}
+
+void WrongList::SetRanges( const std::vector<editeng::MisspellRange>& rRanges )
+{
+ maRanges = rRanges;
+}
+
bool WrongList::IsValid() const
{
return mnInvalidStart == Valid;
diff --git a/editeng/source/editeng/edtspell.hxx b/editeng/source/editeng/edtspell.hxx
index c79c2ac7dc87..8049b5f8509e 100644
--- a/editeng/source/editeng/edtspell.hxx
+++ b/editeng/source/editeng/edtspell.hxx
@@ -86,6 +86,9 @@ public:
WrongList(const WrongList& r);
~WrongList();
+ const std::vector<editeng::MisspellRange>& GetRanges() const;
+ void SetRanges( const std::vector<editeng::MisspellRange>& rRanges );
+
bool IsValid() const;
void SetValid();
void SetInvalidRange( size_t nStart, size_t nEnd );
diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx
index f15f01a2ca4b..b62bc0277b97 100644
--- a/editeng/source/editeng/impedit.hxx
+++ b/editeng/source/editeng/impedit.hxx
@@ -100,6 +100,10 @@ namespace svtools {
class ColorConfig;
}
+namespace editeng {
+ struct MisspellRanges;
+}
+
struct DragAndDropInfo
{
Rectangle aCurCursor;
@@ -886,6 +890,10 @@ public:
void SetHyphenator( ::com::sun::star::uno::Reference<
::com::sun::star::linguistic2::XHyphenator > &xHyph )
{ xHyphenator = xHyph; }
+
+ void GetAllMisspellRanges( std::vector<editeng::MisspellRanges>& rRanges ) const;
+ void SetAllMisspellRanges( const std::vector<editeng::MisspellRanges>& rRanges );
+
SpellInfo* GetSpellInfo() const { return pSpellInfo; }
void SetDefaultLanguage( LanguageType eLang ) { eDefLanguage = eLang; }
diff --git a/editeng/source/editeng/impedit4.cxx b/editeng/source/editeng/impedit4.cxx
index 734a83c83ae9..99a9101610b8 100644
--- a/editeng/source/editeng/impedit4.cxx
+++ b/editeng/source/editeng/impedit4.cxx
@@ -1391,6 +1391,40 @@ EditSelection ImpEditEngine::InsertTextObject( const EditTextObject& rTextObject
return aSel;
}
+void ImpEditEngine::GetAllMisspellRanges( std::vector<editeng::MisspellRanges>& rRanges ) const
+{
+ std::vector<editeng::MisspellRanges> aRanges;
+ const EditDoc& rDoc = GetEditDoc();
+ for (sal_Int32 i = 0, n = rDoc.Count(); i < n; ++i)
+ {
+ const ContentNode* pNode = rDoc.GetObject(i);
+ const WrongList* pWrongList = pNode->GetWrongList();
+ if (!pWrongList)
+ continue;
+
+ aRanges.push_back(editeng::MisspellRanges(i, pWrongList->GetRanges()));
+ }
+
+ aRanges.swap(rRanges);
+}
+
+void ImpEditEngine::SetAllMisspellRanges( const std::vector<editeng::MisspellRanges>& rRanges )
+{
+ EditDoc& rDoc = GetEditDoc();
+ std::vector<editeng::MisspellRanges>::const_iterator it = rRanges.begin(), itEnd = rRanges.end();
+ for (; it != itEnd; ++it)
+ {
+ const editeng::MisspellRanges& rParaRanges = *it;
+ ContentNode* pNode = rDoc.GetObject(rParaRanges.mnParagraph);
+ if (!pNode)
+ continue;
+
+ pNode->CreateWrongList();
+ WrongList* pWrongList = pNode->GetWrongList();
+ pWrongList->SetRanges(rParaRanges.maRanges);
+ }
+}
+
LanguageType ImpEditEngine::GetLanguage( const EditPaM& rPaM, sal_uInt16* pEndPos ) const
{
short nScriptType = GetScriptType( rPaM, pEndPos ); // pEndPos will be valid now, pointing to ScriptChange or NodeLen
diff --git a/editeng/source/editeng/misspellrange.cxx b/editeng/source/editeng/misspellrange.cxx
index 0136705248d6..980a559be791 100644
--- a/editeng/source/editeng/misspellrange.cxx
+++ b/editeng/source/editeng/misspellrange.cxx
@@ -14,6 +14,9 @@ namespace editeng {
MisspellRange::MisspellRange() : mnStart(0), mnEnd(0) {}
MisspellRange::MisspellRange(size_t nStart, size_t nEnd) : mnStart(nStart), mnEnd(nEnd) {}
+MisspellRanges::MisspellRanges(size_t nParagraph, const std::vector<MisspellRange>& rRanges) :
+ mnParagraph(nParagraph), maRanges(rRanges) {}
+
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */