8dcb99cf2cc6da7489a3bdafd2b9d5088f4aa27d
[claws.git] / src / gtkspell.h
1 /*
2     Stuphead: (C) 2000,2001 Grigroy Bakunov, Sergey Pinaev
3  */
4 /* gtkpspell - a spell-checking addon for GtkText
5  * Copyright (c) 2001-2002 Melvin Hadasht
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2 of the License, or (at your option) any later version.
11  * 
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
20  */
21
22 /*
23  * Adapted by the Sylpheed Claws Team.
24  */
25
26 /*
27  *  Adapted for pspell (c) 2001-2002 Melvin Hadasht
28  *
29  */
30
31 #ifndef __gtkpspell_h__
32 #define __gtkpspell_h__
33
34 #include "gtkstext.h"
35
36 #include <gtk/gtkoptionmenu.h>
37 #include <pspell/pspell.h>
38
39 #define PSPELL_FASTMODE       1
40 #define PSPELL_NORMALMODE     2
41 #define PSPELL_BADSPELLERMODE 3
42
43 typedef struct _GtkPspellCheckers {
44         GSList *        checkers;
45         GSList *        dictionary_list;
46         gchar *         error_message;
47 } GtkPspellCheckers;
48
49 typedef struct _Dictionary {
50         gchar *         fullname;
51         gchar *         dictname; /* dictname points into fullname */
52         gchar *         encoding;
53 } Dictionary;
54
55 typedef struct _GtkPspeller {
56         Dictionary *    dictionary;
57         gint            sug_mode;
58         gint            ispell;
59         PspellConfig  * config;
60         PspellManager * checker;
61 } GtkPspeller;
62
63 typedef void (*ContCheckFunc)   (gpointer *gtkpspell);
64
65 #define GTKPSPELLWORDSIZE 1024
66 typedef struct _GtkPspell {
67         GtkPspeller *   gtkpspeller;
68         gchar           theword[GTKPSPELLWORDSIZE];
69         gchar           newword[GTKPSPELLWORDSIZE];
70         gint            start_pos;
71         gint            end_pos;
72         gint            orig_pos;
73         gint            last_check_pos;
74         gboolean        misspelled;
75         gboolean        check_while_typing;
76
77         ContCheckFunc   continue_check; 
78
79         Dictionary *    dict1;
80         Dictionary *    dict2;
81
82         GtkWidget *     gui;
83         gpointer *      compose;
84         
85         GtkWidget*      config_menu;
86         GtkWidget *     replace_entry;
87
88         gint            default_sug_mode;
89         gint            max_sug;
90         GList *         suggestions_list;
91
92         GtkSText *      gtktext;
93         GdkColor        highlight;
94 } GtkPspell;
95
96 typedef PspellConfig GtkPspellConfig;
97
98 extern GtkPspellCheckers *gtkpspellcheckers;
99
100 GtkPspellCheckers*      gtkpspell_checkers_new          ();
101
102 GtkPspellCheckers*      gtkpspell_checkers_delete       ();
103
104 void                    gtkpspell_checkers_reset        ();
105
106 GtkPspell*              gtkpspell_new                   (const gchar *dictionary, 
107                                                          const gchar *encoding,
108                                                          gboolean check_while_typing,  
109                                                          GtkSText *gtktext);
110
111 void                    gtkpspell_delete                (GtkPspell *gtkpspell); 
112
113 guchar*                 gtkpspell_get_dict              (GtkPspell *gtkpspell);
114
115 guchar*                 gtkpspell_get_path              (GtkPspell *gtkpspell);
116
117 gboolean                gtkpspell_set_sug_mode          (GtkPspell *gtkpspell, 
118                                                          gint  themode);
119
120 GSList*                 gtkpspell_get_dictionary_list   (const char *pspell_path,
121                                                          gint refresh);
122
123 void                    gtkpspell_free_dictionary_list  (GSList *list);
124
125 void                    gtkpspell_check_forwards_go     (GtkPspell *gtkpspell);
126 void                    gtkpspell_check_backwards       (GtkPspell *gtkpspell);
127
128 void                    gtkpspell_check_all             (GtkPspell *gtkpspell);
129 void                    gtkpspell_uncheck_all           (GtkPspell *gtkpspell);
130
131 void                    gtkpspell_populate_submenu      (GtkPspell *gtkpspell, 
132                                                          GtkWidget *menuitem);
133
134 GtkWidget*              gtkpspell_dictionary_option_menu_new
135                                                         (const gchar *pspell_path);
136 gchar*                  gtkpspell_get_dictionary_menu_active_item
137                                                         (GtkWidget *menu);
138
139 GtkWidget*              gtkpspell_sugmode_option_menu_new
140                                                         (gint sugmode);
141
142 void                    gtkpspell_sugmode_option_menu_set
143                                                         (GtkOptionMenu *optmenu, 
144                                                          gint sugmode);
145
146 gint                    gtkpspell_get_sugmode_from_option_menu  
147                                                         (GtkOptionMenu *optmenu);
148
149 #endif /* __gtkpspell_h__ */