[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdeplasma-addons/runners/spellchecker
From: Matthias Fuchs <mat69 () gmx ! net>
Date: 2010-11-15 18:49:58
Message-ID: 20101115184958.A1ECFAC8A0 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1197421 by mfuchs:
Makes it possible to specify the language spell checker should use, e.g. "spell \
$LANG_CODE $TERM" or "spell $LANG_NAME $TERM". $LANG_CODE could be "de", "de_AT" etc. \
and $LANG_NAME is the localized language name like "german" on a english locale or \
"allemand" on a french one. Also language names like "american english" are possible. \
$LANG_NAME is case insensitive.
M +44 -2 spellcheck.cpp
M +4 -0 spellcheck.h
--- trunk/KDE/kdeplasma-addons/runners/spellchecker/spellcheck.cpp #1197420:1197421
@@ -22,6 +22,7 @@
#include <KApplication>
// #include <KDebug>
+#include <KGlobal>
#include <KIcon>
SpellCheckRunner::SpellCheckRunner(QObject* parent, const QVariantList &args)
@@ -32,14 +33,25 @@
setObjectName(QLatin1String( "Spell Checker" ));
setIgnoredTypes(Plasma::RunnerContext::FileSystem | \
Plasma::RunnerContext::NetworkLocation); setSpeed(AbstractRunner::SlowSpeed);
-
- reloadConfiguration();
}
SpellCheckRunner::~SpellCheckRunner()
{
}
+void SpellCheckRunner::init()
+{
+ Plasma::AbstractRunner::init();
+
+ //store all language names, makes it posible to type "spell german TERM" if \
english locale is set + KLocale *locale = KGlobal::locale();
+ QStringList codes = locale->allLanguagesList();
+ foreach (const QString &code, codes) {
+ const QString name = locale->languageCodeToName(code);
+ m_languages[name.toLower()] = code;
+ }
+}
+
void SpellCheckRunner::reloadConfiguration()
{
m_triggerWord = config().readEntry("trigger", i18n("spell"));
@@ -77,9 +89,39 @@
return;
}
+ QString language = m_speller.defaultLanguage();
query = query.mid(len).trimmed();
+ QStringList terms = query.split(' ');
+
+ //two terms specified, check if first is a language
+ QString customLanguage;
+ if (terms.count() == 2) {
+ customLanguage = terms[0];
+ query = terms[1];
}
+ //three terms specified, check if first two are a language, e.g. "american \
english" + if (terms.count() == 3) {
+ customLanguage = terms[0] + ' ' + terms[1];
+ query = terms[2];
+ }
+ if (!customLanguage.isEmpty()) {
+ language = customLanguage;
+ m_speller.setLanguage(language);
+
+ //not valid, maybe it is a language name, not a code
+ if (!m_speller.isValid()) {
+ QHash<QString, QString>::const_iterator it = \
m_languages.find(language.toLower()); + //is a valid language name
+ if (it != m_languages.constEnd()) {
+ language = *it;
+ }
+ }
+ }
+
+ m_speller.setLanguage(language);
+ }
+
if (query.size() < 3) {
return;
}
--- trunk/KDE/kdeplasma-addons/runners/spellchecker/spellcheck.h #1197420:1197421
@@ -39,8 +39,12 @@
void reloadConfiguration();
+protected slots:
+ void init();
+
private:
QString m_triggerWord;
+ QHash<QString, QString> m_languages;//key=language name, value=language code
bool m_requireTriggerWord;
Sonnet::Speller m_speller;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic