forked from psemiletov/tea-qt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
spellchecker.h
130 lines (95 loc) · 3.94 KB
/
spellchecker.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/***************************************************************************
* 2007-2021 by Peter Semiletov *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 3 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef SPELLCHECKER_H
#define SPELLCHECKER_H
#ifdef ASPELL_ENABLE
#include "aspell.h"
#endif
#ifdef HUNSPELL_ENABLE
#include <hunspell/hunspell.hxx>
#endif
#include <QDebug>
#include <QString>
#include <QStringList>
#include <QHash>
class CSpellchecker
{
public:
QString language;
QString dir_dicts;
QString dir_user_dicts;
QStringList modules_list;
bool loaded;
CSpellchecker (const QString &lang,
const QString &dir_path,
const QString &dir_user): language (lang), dir_dicts (dir_path), dir_user_dicts (dir_user), loaded(false)
{};
virtual ~CSpellchecker() {};
virtual void load_dict() = 0; //uses current language
virtual void save_user_dict() = 0; //uses current language
virtual void change_lang (const QString &lang) = 0; //set current language
virtual void add_to_user_dict (const QString &word) = 0;
virtual void remove_from_user_dict (const QString &word) = 0;
virtual bool check (const QString &word) = 0;
virtual void get_speller_modules_list() = 0;
virtual QStringList get_suggestions_list (const QString &word) = 0;
};
#ifdef ASPELL_ENABLE
class CAspellchecker: public CSpellchecker
{
public:
AspellConfig *spell_config;
AspellCanHaveError *ret;
AspellSpeller *speller;
CAspellchecker (const QString &lang, const QString &dir_path = "", const QString &dir_user = "");
~CAspellchecker();
void save_user_dict() {}; //not needed due to Aspell implementation
void load_dict();
void change_lang (const QString &lang);
void add_to_user_dict (const QString &word);
void remove_from_user_dict (const QString &word);
bool check (const QString &word);
void get_speller_modules_list();
QStringList get_suggestions_list (const QString &word);
};
QString aspell_default_dict_path();
#endif
#ifdef HUNSPELL_ENABLE
class CHunspellChecker: public CSpellchecker
{
public:
Hunspell *speller;
QStringList user_words;
const char *encoding; //depercated (old Hunspell versions) but supported
std::string str_encoding; //new approach
CHunspellChecker (const QString &lang, const QString &dir_path = "", const QString &dir_user = "");
~CHunspellChecker();
void save_user_dict();
void load_dict();
void change_lang (const QString &lang);
void add_to_user_dict (const QString &word);
void remove_from_user_dict (const QString &word);
bool check (const QString &word);
void get_speller_modules_list();
QStringList get_suggestions_list (const QString &word);
};
QString hunspell_default_dict_path();
#endif
#endif