Various bug fixes and enhancements, see ChangeLog.claws 2002-02-03
[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         gint             start_pos;
70         gint             end_pos;
71         gint             orig_pos;
72         gint             end_check_pos;
73         gboolean         misspelled;
74         gboolean         check_while_typing;
75
76         ContCheckFunc    continue_check; 
77 #if 0
78         Dictionary      *dict1;
79         Dictionary      *dict2;
80
81         GtkWidget       *gui;
82         gpointer        *compose;
83 #endif
84         GtkWidget       *config_menu;
85         GtkWidget       *popup_config_menu;
86         GtkWidget       *sug_menu;
87         GtkWidget       *replace_entry;
88
89         gint             default_sug_mode;
90         gint             max_sug;
91         GList           *suggestions_list;
92
93         GtkSText        *gtktext;
94         GdkColor         highlight;
95 } GtkPspell;
96
97 typedef PspellConfig GtkPspellConfig;
98
99 extern GtkPspellCheckers *gtkpspellcheckers;
100
101 GtkPspellCheckers*      gtkpspell_checkers_new          ();
102
103 GtkPspellCheckers*      gtkpspell_checkers_delete       ();
104
105 void                    gtkpspell_checkers_reset_error  ();
106
107 GtkPspell*              gtkpspell_new                   (const gchar *dictionary, 
108                                                          const gchar *encoding,
109                                                          gint  misspelled_color,
110                                                          gboolean check_while_typing,  
111                                                          GtkSText *gtktext);
112
113 void                    gtkpspell_delete                (GtkPspell *gtkpspell); 
114
115 guchar*                 gtkpspell_get_dict              (GtkPspell *gtkpspell);
116
117 guchar*                 gtkpspell_get_path              (GtkPspell *gtkpspell);
118
119 gboolean                gtkpspell_set_sug_mode          (GtkPspell *gtkpspell, 
120                                                          gint  themode);
121
122 GSList*                 gtkpspell_get_dictionary_list   (const char *pspell_path,
123                                                          gint refresh);
124
125 void                    gtkpspell_free_dictionary_list  (GSList *list);
126
127 void                    gtkpspell_check_forwards_go     (GtkPspell *gtkpspell);
128 void                    gtkpspell_check_backwards       (GtkPspell *gtkpspell);
129
130 void                    gtkpspell_check_all             (GtkPspell *gtkpspell);
131 void                    gtkpspell_uncheck_all           (GtkPspell *gtkpspell);
132 void                    gtkpspell_highlight_all         (GtkPspell *gtkpspell);
133
134 void                    gtkpspell_populate_submenu      (GtkPspell *gtkpspell, 
135                                                          GtkWidget *menuitem);
136
137 GtkWidget*              gtkpspell_dictionary_option_menu_new
138                                                         (const gchar *pspell_path);
139 gchar*                  gtkpspell_get_dictionary_menu_active_item
140                                                         (GtkWidget *menu);
141
142 GtkWidget*              gtkpspell_sugmode_option_menu_new
143                                                         (gint sugmode);
144
145 void                    gtkpspell_sugmode_option_menu_set
146                                                         (GtkOptionMenu *optmenu, 
147                                                          gint sugmode);
148
149 gint                    gtkpspell_get_sugmode_from_option_menu  
150                                                         (GtkOptionMenu *optmenu);
151
152 #endif /* __gtkpspell_h__ */