r17495 by craig - Bump hunspell plugin, simplify and clean some more
scribus-commit
scribus-commit at lists.scribus.net
Fri May 4 16:41:02 UTC 2012
Author: craig
Date: Fri May 4 16:41:02 2012
New Revision: 17495
URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=17495
Log:
Bump hunspell plugin, simplify and clean some more
Modified:
branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspelldialog.cpp
branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspelldialog.h
branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspellpluginimpl.cpp
branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspellpluginimpl.h
branches/Version14x/Scribus/scribus/scpaths.cpp
Modified: branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspelldialog.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=17495&path=/branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspelldialog.cpp
==============================================================================
--- branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspelldialog.cpp (original)
+++ branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspelldialog.cpp Fri May 4 16:41:02 2012
@@ -21,19 +21,19 @@
connect (ignoreAllPushButton, SIGNAL(clicked()), this, SLOT(ignoreAllWords()));
connect (changePushButton, SIGNAL(clicked()), this, SLOT(changeWord()));
connect (changeAllPushButton, SIGNAL(clicked()), this, SLOT(changeAllWords()));
- connect (languagesComboBox, SIGNAL(currentIndexChanged (int)), this, SLOT(languageComboChanged(int)));
+ connect (languagesComboBox, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(languageComboChanged(const QString &)));
m_doc=doc;
m_docChanged=false;
- m_Itext=iText;
+ m_iText=iText;
m_returnToDefaultLang=false;
m_primaryLangIndex=0;
}
-void HunspellDialog::set(QMap<QString, QString>* dictionaryMap, Hunspell **hspellers, QList<WordsFound> *wfList)
+void HunspellDialog::set(QMap<QString, QString>* dictionaryMap, QMap<QString, Hunspell*> *hspellerMap, QList<WordsFound> *wfList)
{
m_dictionaryMap=dictionaryMap;
- m_hspellers=hspellers;
+ m_hspellerMap=hspellerMap;
m_wfList=wfList;
bool b=languagesComboBox->blockSignals(true);
languagesComboBox->clear();
@@ -91,7 +91,7 @@
updateSuggestions(currWF.replacements);
int sentencePos=0;
- QString sentence(m_Itext->sentence(currWF.start, sentencePos));
+ QString sentence(m_iText->sentence(currWF.start, sentencePos));
sentence.insert(currWF.end-sentencePos+currWF.changeOffset,"</b></font>");
sentence.insert(currWF.start-sentencePos+currWF.changeOffset,"<font color=red><b>");
sentenceTextEdit->setText(sentence);
@@ -132,9 +132,8 @@
void HunspellDialog::replaceWord(int i)
{
//TODO: rehypenate after the replacement
- //qDebug()<<"Replacing word"<<i<m_wfList->at(i).w<<m_wfList->at(i).start;
QString newText(suggestionsListWidget->currentItem()->text());
- int lengthDiff=m_Itext->replaceWord(m_wfList->at(i).start+m_wfList->at(i).changeOffset, newText);
+ int lengthDiff=m_iText->replaceWord(m_wfList->at(i).start+m_wfList->at(i).changeOffset, newText);
if (lengthDiff!=0)
{
for (int k=i; k<m_wfList->count();++k)
@@ -144,28 +143,25 @@
m_docChanged=true;
}
-void HunspellDialog::languageComboChanged(int index)
+void HunspellDialog::languageComboChanged(const QString &newLanguage)
{
m_returnToDefaultLang=true;
- QString newLanguage=languagesComboBox->itemText(index);
- QString wordToCheck=m_wfList->at(wfListIndex).w;
-// qDebug()<<"You changed the language to:"<<newLanguage;
- if (!m_hspellers[index])
+ QString wordLang=LanguageManager::instance()->getAbbrevFromLang(newLanguage, true, false);
+ if (!m_hspellerMap->contains(wordLang) )
{
- qDebug()<<"hspeller"<<index<<"does not exist";
+ qDebug()<<"hspeller"<<wordLang<<"does not exist";
return;
}
- if (m_hspellers[index]->spell(wordToCheck.toUtf8().constData())==0)
+
+ QString word=m_wfList->at(wfListIndex).w;
+ if ((*m_hspellerMap)[wordLang]->spell(word.toUtf8().constData())==0)
{
char **sugglist = NULL;
- int suggCount=m_hspellers[index]->suggest(&sugglist, wordToCheck.toUtf8().constData());
+ int suggCount=(*m_hspellerMap)[wordLang]->suggest(&sugglist, word.toUtf8().constData());
QStringList replacements;
for (int j=0; j < suggCount; ++j)
- {
- //qDebug()<<"Suggestion "<<j<<":"<<sugglist[j];
replacements << QString::fromUtf8(sugglist[j]);
- }
- m_hspellers[index]->free_list(&sugglist, suggCount);
+ (*m_hspellerMap)[wordLang]->free_list(&sugglist, suggCount);
updateSuggestions(replacements);
}
else
Modified: branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspelldialog.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=17495&path=/branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspelldialog.h
==============================================================================
--- branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspelldialog.h (original)
+++ branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspelldialog.h Fri May 4 16:41:02 2012
@@ -22,7 +22,7 @@
public:
HunspellDialog(QWidget* parent, ScribusDoc *doc, StoryText* iText);
~HunspellDialog() {};
- void set(QMap<QString, QString>* dictionaryMap, Hunspell **hspellers, QList<WordsFound>* wfList);
+ void set(QMap<QString, QString>* dictionaryMap, QMap<QString, Hunspell*> *hspellerMap, QList<WordsFound>* wfList);
bool docChanged() {return m_docChanged;}
void updateSuggestions(QStringList& newSuggestions);
@@ -32,14 +32,14 @@
void changeWord();
void changeAllWords();
void replaceWord(int i);
- void languageComboChanged(int index);
+ void languageComboChanged(const QString &);
void setLanguageCombo(const QString &newLangAbbrev);
private:
ScribusDoc* m_doc;
- StoryText* m_Itext;
+ StoryText* m_iText;
QMap<QString, QString>* m_dictionaryMap;
- Hunspell **m_hspellers;
+ QMap<QString, Hunspell*> *m_hspellerMap;
QList<WordsFound>* m_wfList;
WordsFound currWF;
int wfListIndex;
Modified: branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspellpluginimpl.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=17495&path=/branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspellpluginimpl.cpp
==============================================================================
--- branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspellpluginimpl.cpp (original)
+++ branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspellpluginimpl.cpp Fri May 4 16:41:02 2012
@@ -31,7 +31,7 @@
// Initialize members here, if any
HunspellPluginImpl::HunspellPluginImpl() : QObject(0)
{
- hspellers=NULL;
+ //hspellers=NULL;
numDicts=0;
m_runningForSE=false;
m_SE=NULL;
@@ -39,16 +39,12 @@
HunspellPluginImpl::~HunspellPluginImpl()
{
- if (hspellers)
- {
- for (int i = 0; i < numDicts; ++i)
- {
- delete hspellers[i];
- hspellers[i] = NULL;
- }
- delete[] hspellers;
- }
- hspellers = NULL;
+ foreach (Hunspell* h, hspellerMap)
+ {
+ delete h;
+ h = NULL;
+ }
+ hspellerMap.clear();
numDicts = 0;
}
@@ -56,23 +52,14 @@
{
m_doc=doc;
bool initOk=initHunspell();
- qDebug()<<"Hunspell Init Ok:"<<initOk;
if (!initOk)
return false;
bool spellCheckOk=false;
if (m_runningForSE)
- {
- //qDebug()<<"Running for StoryEditor";
spellCheckOk=checkWithHunspellSE();
- }
else
- {
- //qDebug()<<"Running for ScribusMainWindow";
spellCheckOk=checkWithHunspell();
- }
- if (!spellCheckOk)
- return false;
- return true;
+ return spellCheckOk;
}
bool HunspellPluginImpl::findDictionaries()
@@ -118,14 +105,11 @@
return false;
//Initialise one hunspeller for each dictionary found
- //Maybe we only need the text language related one later on
- int i=0;
- hspellers = new Hunspell* [numDicts];
QMap<QString, QString>::iterator it = dictionaryMap.begin();
while (it != dictionaryMap.end())
{
- hspellers[i++] = new Hunspell((it.value()+".aff").toLocal8Bit().constData(),
- (it.value()+".dic").toLocal8Bit().constData());
+ hspellerMap.insert(it.key(), new Hunspell((it.value()+".aff").toLocal8Bit().constData(),
+ (it.value()+".dic").toLocal8Bit().constData()));
++it;
}
return true;
@@ -166,8 +150,7 @@
currPos=wordStart;
QString word=iText->text(wordStart,wordEnd-wordStart);
QString wordLang=iText->charStyle(wordStart).language();
- //qDebug()<<word<<"is set to be in language"<<wordLang;
- wordLang=LanguageManager::instance()->getAbbrevFromLang(wordLang, true);
+ wordLang=LanguageManager::instance()->getAbbrevFromLang(wordLang, true, false);
//A little hack as for some reason our en dictionary from the aspell plugin was not called en_GB or en_US but en, content was en_GB though. Meh.
if (wordLang=="en")
wordLang="en_GB";
@@ -187,7 +170,7 @@
}
spellerIndex=i;
}
- if (hspellers[spellerIndex]->spell(word.toUtf8().constData())==0)
+ if (hspellerMap.contains(wordLang) && hspellerMap[wordLang]->spell(word.toUtf8().constData())==0)
{
struct WordsFound wf;
wf.start=currPos;
@@ -199,10 +182,10 @@
wf.lang=wordLang;
wf.replacements.clear();
char **sugglist = NULL;
- int suggCount=hspellers[spellerIndex]->suggest(&sugglist, word.toUtf8().constData());
+ int suggCount=hspellerMap[wordLang]->suggest(&sugglist, word.toUtf8().constData());
for (int j=0; j < suggCount; ++j)
wf.replacements << QString::fromUtf8(sugglist[j]);
- hspellers[spellerIndex]->free_list(&sugglist, suggCount);
+ hspellerMap[wordLang]->free_list(&sugglist, suggCount);
wordsToCorrect.append(wf);
}
}
@@ -212,7 +195,7 @@
bool HunspellPluginImpl::openGUIForTextFrame(StoryText *iText)
{
HunspellDialog hsDialog(m_doc->scMW(), m_doc, iText);
- hsDialog.set(&dictionaryMap, hspellers, &wordsToCorrect);
+ hsDialog.set(&dictionaryMap, &hspellerMap, &wordsToCorrect);
hsDialog.exec();
if (hsDialog.docChanged())
m_doc->changed();
@@ -223,7 +206,7 @@
{
m_SE->setSpellActive(true);
HunspellDialog hsDialog(m_SE, m_doc, iText);
- hsDialog.set(&dictionaryMap, hspellers, &wordsToCorrect);
+ hsDialog.set(&dictionaryMap, &hspellerMap, &wordsToCorrect);
hsDialog.exec();
m_SE->setSpellActive(false);
return true;
Modified: branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspellpluginimpl.h
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=17495&path=/branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspellpluginimpl.h
==============================================================================
--- branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspellpluginimpl.h (original)
+++ branches/Version14x/Scribus/scribus/plugins/tools/hunspellcheck/hunspellpluginimpl.h Fri May 4 16:41:02 2012
@@ -44,9 +44,7 @@
QMap<QString, QString> dictionaryMap;
QStringList dictionaryPaths;
int numDicts, numAFFs;
- Hunspell **hspellers;
- //QStringList dictEntries;
- //QStringList affEntries;
+ QMap<QString, Hunspell*> hspellerMap;
ScribusDoc* m_doc;
bool m_runningForSE;
StoryEditor* m_SE;
Modified: branches/Version14x/Scribus/scribus/scpaths.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=17495&path=/branches/Version14x/Scribus/scribus/scpaths.cpp
==============================================================================
--- branches/Version14x/Scribus/scribus/scpaths.cpp (original)
+++ branches/Version14x/Scribus/scribus/scpaths.cpp Fri May 4 16:41:02 2012
@@ -266,7 +266,6 @@
QStringList spellDirs;
spellDirs.append(m_shareDir + "dicts/spelling/");
#ifdef Q_OS_MAC
- //spellDirs.append(QDir::homePath() + "/Library/Fonts/");
d.setPath(macPortsPath);
if (d.exists())
spellDirs.append(macPortsPath);
@@ -274,11 +273,9 @@
if (d.exists())
spellDirs.append(finkPath);
d.setPath(osxLibreOfficePath);
-
- if (d.exists())
- {
- QStringList dictDirFilters;
- dictDirFilters << "dict-*";
+ if (d.exists())
+ {
+ QStringList dictDirFilters("dict-*");
QStringList dictDirList(d.entryList(dictDirFilters, QDir::Dirs, QDir::Name));
QString dir;
foreach (dir, dictDirList)
@@ -287,8 +284,7 @@
d.setPath(osxUserLibreOfficePath);
if (d.exists())
{
- QStringList dictDirFilters;
- dictDirFilters << "dict-*";
+ QStringList dictDirFilters("dict-*");
QStringList dictDirList(d.entryList(dictDirFilters, QDir::Dirs, QDir::Name));
QString dir;
foreach (dir, dictDirList)
@@ -300,8 +296,7 @@
d.setPath(progFiles+windowsLOPath);
if (d.exists())
{
- QStringList dictDirFilters;
- dictDirFilters << "dict-*";
+ QStringList dictDirFilters("dict-*");
QStringList dictDirList(d.entryList(dictDirFilters, QDir::Dirs, QDir::Name));
QString dir;
foreach (dir, dictDirList)
More information about the scribus-commit
mailing list