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