Mercurial > pidgin
annotate plugins/spellchk.c @ 10418:bed2c96bc1fb
[gaim-migrate @ 11669]
I split the status-saving code into it's own little API, because it
really is separate from the other status.c
savedstatuses.c sits on top of the rest of the status API.
And you can delete saved statuses now.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 26 Dec 2004 00:46:26 +0000 |
parents | d672afd04dcd |
children | 8f2b74c5aa24 |
rev | line source |
---|---|
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
1 /* |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
2 * A lot of this code (especially the config code) was taken directly |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
3 * or nearly directly from xchat, version 1.4.2 by Peter Zelezny and others. |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
4 */ |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5587
diff
changeset
|
5 #include "internal.h" |
9791 | 6 #include "gtkgaim.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5587
diff
changeset
|
7 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5587
diff
changeset
|
8 #include "debug.h" |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6392
diff
changeset
|
9 #include "signals.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5587
diff
changeset
|
10 #include "util.h" |
9943 | 11 #include "version.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5587
diff
changeset
|
12 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5587
diff
changeset
|
13 #include "gtkplugin.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5587
diff
changeset
|
14 #include "gtkutils.h" |
4202
59751fe608c5
[gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents:
4165
diff
changeset
|
15 |
6735 | 16 #include <stdio.h> |
17 #include <string.h> | |
6849
3c885e6784ee
[gaim-migrate @ 7394]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6780
diff
changeset
|
18 #ifndef _WIN32 |
6735 | 19 #include <strings.h> |
6849
3c885e6784ee
[gaim-migrate @ 7394]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6780
diff
changeset
|
20 #endif |
6735 | 21 #include <sys/types.h> |
22 #include <sys/stat.h> | |
23 | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
24 #define SPELLCHECK_PLUGIN_ID "gtk-spellcheck" |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
25 |
4348 | 26 enum { |
27 BAD_COLUMN, | |
28 GOOD_COLUMN, | |
29 N_COLUMNS | |
103 | 30 }; |
31 | |
4348 | 32 static int num_words(const char *); |
1081
efcacae6acdb
[gaim-migrate @ 1091]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1047
diff
changeset
|
33 static int get_word(char *, int); |
efcacae6acdb
[gaim-migrate @ 1091]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1047
diff
changeset
|
34 static char *have_word(char *, int); |
4348 | 35 static void substitute(char **, int, int, const char *); |
36 static GtkListStore *model; | |
103 | 37 |
6780
e9a730ad5a3c
[gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
38 static gboolean |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6392
diff
changeset
|
39 substitute_words(GaimAccount *account, GaimConversation *conv, |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6392
diff
changeset
|
40 char **message, void *data) |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6392
diff
changeset
|
41 { |
103 | 42 int i, l; |
43 int word; | |
44 char *tmp; | |
45 | |
46 if (message == NULL || *message == NULL) | |
6780
e9a730ad5a3c
[gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
47 return FALSE; |
103 | 48 |
49 l = num_words(*message); | |
50 for (i = 0; i < l; i++) { | |
4348 | 51 GtkTreeIter iter; |
103 | 52 word = get_word(*message, i); |
4348 | 53 if(gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) { |
54 do { | |
55 GValue val0, val1; | |
56 const char *bad, *good; | |
57 memset(&val0, 0, sizeof(val0)); | |
58 memset(&val1, 0, sizeof(val1)); | |
59 gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, 0, &val0); | |
60 gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, 1, &val1); | |
61 tmp = have_word(*message, word); | |
62 bad = g_value_get_string(&val0); | |
63 good = g_value_get_string(&val1); | |
64 if (!strcmp(tmp, bad)) { | |
65 substitute(message, word, strlen(bad), | |
66 good); | |
67 l += num_words(good) - num_words(bad); | |
68 i += num_words(good) - num_words(bad); | |
69 } | |
70 free(tmp); | |
71 g_value_unset(&val0); | |
72 g_value_unset(&val1); | |
73 } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter)); | |
103 | 74 } |
75 } | |
6780
e9a730ad5a3c
[gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
76 |
e9a730ad5a3c
[gaim-migrate @ 7319]
Christian Hammond <chipx86@chipx86.com>
parents:
6735
diff
changeset
|
77 return FALSE; |
103 | 78 } |
79 | |
1081
efcacae6acdb
[gaim-migrate @ 1091]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1047
diff
changeset
|
80 static int buf_get_line(char *ibuf, char **buf, int *position, int len) { |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
81 int pos = *position, spos = pos; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
82 |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
83 if (pos == len) |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
84 return 0; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
85 |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
86 while (ibuf[pos++] != '\n') { |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
87 if (pos == len) |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
88 return 0; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
89 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
90 pos--; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
91 ibuf[pos] = 0; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
92 *buf = &ibuf[spos]; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
93 pos++; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
94 *position = pos; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
95 return 1; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
96 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
97 |
1081
efcacae6acdb
[gaim-migrate @ 1091]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1047
diff
changeset
|
98 static void load_conf() { |
4348 | 99 const char * const defaultconf = "BAD r\nGOOD are\n\n" |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
100 "BAD u\nGOOD you\n\n" |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
101 "BAD teh\nGOOD the\n\n"; |
7466 | 102 gchar *buf, *ibuf; |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
103 char name[82]; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
104 char cmd[256]; |
4348 | 105 int pnt = 0; |
106 gsize size; | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
107 |
4348 | 108 model = gtk_list_store_new((gint)N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING); |
103 | 109 |
7466 | 110 buf = g_build_filename(gaim_user_dir(), "dict", NULL); |
4348 | 111 g_file_get_contents(buf, &ibuf, &size, NULL); |
7606 | 112 g_free(buf); |
4348 | 113 if(!ibuf) { |
114 ibuf = g_strdup(defaultconf); | |
115 size = strlen(defaultconf); | |
106
e05e6373ea5a
[gaim-migrate @ 116]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
103
diff
changeset
|
116 } |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
117 |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
118 cmd[0] = 0; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
119 name[0] = 0; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
120 |
4348 | 121 while(buf_get_line(ibuf, &buf, &pnt, size)) { |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
122 if (*buf != '#') { |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
123 if (!strncasecmp(buf, "BAD ", 4)) |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
124 strncpy(name, buf + 4, 81); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
125 if (!strncasecmp(buf, "GOOD ", 5)) { |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
126 strncpy(cmd, buf + 5, 255); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
127 if (*name) { |
4348 | 128 GtkTreeIter iter; |
129 gtk_list_store_append(model, &iter); | |
130 gtk_list_store_set(model, &iter, | |
131 0, g_strdup(name), | |
132 1, g_strdup(cmd), | |
133 -1); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
134 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
135 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
136 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
137 } |
7606 | 138 g_free(ibuf); |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
139 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
140 |
103 | 141 |
142 | |
4348 | 143 static int num_words(const char *m) { |
103 | 144 int count = 0; |
7631 | 145 guint pos; |
103 | 146 int state = 0; |
147 | |
148 for (pos = 0; pos < strlen(m); pos++) { | |
149 switch (state) { | |
150 case 0: /* expecting word */ | |
6250
1c8caacac1de
[gaim-migrate @ 6746]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6116
diff
changeset
|
151 if (!g_ascii_isspace(m[pos]) && !g_ascii_ispunct(m[pos])) { |
103 | 152 count++; |
153 state = 1; | |
154 } else if (m[pos] == '<') | |
155 state = 2; | |
156 break; | |
157 case 1: /* inside word */ | |
112
a57fd3390ee4
[gaim-migrate @ 122]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
111
diff
changeset
|
158 if (m[pos] == '<') |
a57fd3390ee4
[gaim-migrate @ 122]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
111
diff
changeset
|
159 state = 2; |
6250
1c8caacac1de
[gaim-migrate @ 6746]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6116
diff
changeset
|
160 else if (g_ascii_isspace(m[pos]) || g_ascii_ispunct(m[pos])) |
103 | 161 state = 0; |
162 break; | |
163 case 2: /* inside HTML tag */ | |
164 if (m[pos] == '>') | |
165 state = 0; | |
166 break; | |
167 } | |
168 } | |
169 return count; | |
170 } | |
171 | |
1081
efcacae6acdb
[gaim-migrate @ 1091]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1047
diff
changeset
|
172 static int get_word(char *m, int word) { |
103 | 173 int count = 0; |
7631 | 174 guint pos = 0; |
103 | 175 int state = 0; |
176 | |
177 for (pos = 0; pos < strlen(m) && count <= word; pos++) { | |
178 switch (state) { | |
179 case 0: | |
6250
1c8caacac1de
[gaim-migrate @ 6746]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6116
diff
changeset
|
180 if (!g_ascii_isspace(m[pos]) && !g_ascii_ispunct(m[pos])) { |
103 | 181 count++; |
182 state = 1; | |
183 } else if (m[pos] == '<') | |
184 state = 2; | |
185 break; | |
186 case 1: | |
112
a57fd3390ee4
[gaim-migrate @ 122]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
111
diff
changeset
|
187 if (m[pos] == '<') |
a57fd3390ee4
[gaim-migrate @ 122]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
111
diff
changeset
|
188 state = 2; |
6250
1c8caacac1de
[gaim-migrate @ 6746]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6116
diff
changeset
|
189 else if (g_ascii_isspace(m[pos]) || g_ascii_ispunct(m[pos])) |
103 | 190 state = 0; |
191 break; | |
192 case 2: | |
193 if (m[pos] == '>') | |
194 state = 0; | |
195 break; | |
196 } | |
197 } | |
198 return pos - 1; | |
199 } | |
200 | |
1081
efcacae6acdb
[gaim-migrate @ 1091]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1047
diff
changeset
|
201 static char *have_word(char *m, int pos) { |
3733 | 202 char *tmp = strpbrk(&m[pos], "' \t\f\r\n\"><.?!-,/"); |
103 | 203 int len = (int)(tmp - &m[pos]); |
204 | |
205 if (tmp == NULL) { | |
206 tmp = strdup(&m[pos]); | |
207 return tmp; | |
208 } | |
209 | |
210 tmp = malloc(len + 1); | |
211 tmp[0] = 0; | |
212 strncat(tmp, &m[pos], len); | |
213 | |
214 return tmp; | |
215 } | |
216 | |
4348 | 217 static void substitute(char **mes, int pos, int m, const char *text) { |
257
a93e273ca1d6
[gaim-migrate @ 267]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
218 char *new = g_malloc(strlen(*mes) + strlen(text) + 1); |
8673 | 219 char *tmp; |
103 | 220 new[0] = 0; |
221 | |
222 strncat(new, *mes, pos); | |
223 strcat(new, text); | |
224 | |
225 strcat(new, &(*mes)[pos + m]); | |
8673 | 226 tmp = *mes; |
103 | 227 *mes = new; |
8673 | 228 g_free(tmp); |
103 | 229 } |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
230 |
4348 | 231 static GtkWidget *tree; |
1081
efcacae6acdb
[gaim-migrate @ 1091]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1047
diff
changeset
|
232 static GtkWidget *bad_entry; |
efcacae6acdb
[gaim-migrate @ 1091]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1047
diff
changeset
|
233 static GtkWidget *good_entry; |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
234 |
4348 | 235 static void save_list(); |
236 | |
237 static void on_edited(GtkCellRendererText *cellrenderertext, | |
6116 | 238 gchar *path, gchar *arg2, gpointer data) |
4348 | 239 { |
240 GtkTreeIter iter; | |
241 GValue val; | |
242 if(arg2[0] == '\0') { | |
243 gdk_beep(); | |
244 return; | |
245 } | |
246 memset(&val, 0, sizeof(val)); | |
247 g_return_if_fail(gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(model), &iter, path)); | |
248 gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, GPOINTER_TO_INT(data), &val); | |
249 if(strcmp(arg2, g_value_get_string(&val))) { | |
250 gtk_list_store_set(model, &iter, GPOINTER_TO_INT(data), arg2, -1); | |
251 save_list(); | |
252 } | |
253 g_value_unset(&val); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
254 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
255 |
4348 | 256 static void list_add_new() |
257 { | |
258 GtkTreeIter iter; | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
259 |
4348 | 260 gtk_list_store_append(model, &iter); |
261 gtk_list_store_set(model, &iter, | |
262 0, gtk_entry_get_text(GTK_ENTRY(bad_entry)), | |
263 1, gtk_entry_get_text(GTK_ENTRY(good_entry)), | |
264 -1); | |
10234 | 265 gtk_editable_delete_text(GTK_EDITABLE(bad_entry), 0, -1); |
266 gtk_editable_delete_text(GTK_EDITABLE(good_entry), 0, -1); | |
4348 | 267 gtk_widget_grab_focus(bad_entry); |
4601 | 268 |
269 save_list(); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
270 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
271 |
4348 | 272 static void add_selected_row_to_list(GtkTreeModel *model, GtkTreePath *path, |
273 GtkTreeIter *iter, gpointer data) | |
274 { | |
275 GSList **list = (GSList **)data; | |
276 *list = g_slist_append(*list, gtk_tree_path_copy(path) ); | |
277 } | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6392
diff
changeset
|
278 |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
279 |
4348 | 280 static void remove_row(void *data1, gpointer data2) |
281 { | |
282 GtkTreePath *path = (GtkTreePath*)data1; | |
283 GtkTreeIter iter; | |
284 gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path); | |
285 gtk_list_store_remove(model, &iter); | |
286 gtk_tree_path_free(path); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
287 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
288 |
4348 | 289 static void list_delete() |
290 { | |
291 GtkTreeSelection *sel; | |
292 GSList *list = NULL; | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
293 |
4348 | 294 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)); |
295 gtk_tree_selection_selected_foreach(sel, add_selected_row_to_list, &list); | |
296 | |
297 g_slist_foreach(list, remove_row, NULL); | |
298 g_slist_free(list); | |
4601 | 299 |
300 save_list(); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
301 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
302 |
4348 | 303 static void save_list() |
304 { | |
305 FILE *f; | |
306 char *name; | |
307 GtkTreeIter iter; | |
308 char tempfilename[BUF_LONG]; | |
309 int fd; | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
310 |
8596 | 311 name = g_build_filename(gaim_user_dir(), "dict", NULL); |
4348 | 312 strcpy(tempfilename, name); |
313 strcat(tempfilename,".XXXXXX"); | |
314 fd = g_mkstemp(tempfilename); | |
315 if(fd<0) { | |
316 perror(tempfilename); | |
317 g_free(name); | |
318 return; | |
319 } | |
320 if (!(f = fdopen(fd, "w"))) { | |
321 perror("fdopen"); | |
322 close(fd); | |
323 g_free(name); | |
324 return; | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
325 } |
4348 | 326 |
327 fchmod(fd, S_IRUSR | S_IWUSR); | |
4373
dcc6c130c6d9
[gaim-migrate @ 4639]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4363
diff
changeset
|
328 |
4348 | 329 if(gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) { |
330 do { | |
331 GValue val0, val1; | |
332 memset(&val0, 0, sizeof(val0)); | |
333 memset(&val1, 0, sizeof(val1)); | |
334 gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, 0, &val0); | |
335 gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, 1, &val1); | |
336 fprintf(f, "BAD %s\nGOOD %s\n\n", g_value_get_string(&val0), g_value_get_string(&val1)); | |
337 g_value_unset(&val0); | |
338 g_value_unset(&val1); | |
339 } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter)); | |
340 } | |
341 if(fclose(f)) { | |
5227
6d1707dc8c3d
[gaim-migrate @ 5597]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
342 gaim_debug(GAIM_DEBUG_ERROR, "spellchk", |
6d1707dc8c3d
[gaim-migrate @ 5597]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
343 "Error writing to %s: %m\n", tempfilename); |
4348 | 344 unlink(tempfilename); |
345 g_free(name); | |
346 return; | |
347 } | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6392
diff
changeset
|
348 rename(tempfilename, name); |
4348 | 349 g_free(name); |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
350 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
351 |
4348 | 352 static void |
353 check_if_something_is_selected(GtkTreeModel *model, | |
354 GtkTreePath *path, GtkTreeIter *iter, gpointer data) | |
355 { | |
356 *((gboolean*)data) = TRUE; | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
357 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
358 |
4348 | 359 static void on_selection_changed(GtkTreeSelection *sel, |
360 gpointer data) | |
361 { | |
362 gboolean is = FALSE; | |
363 gtk_tree_selection_selected_foreach(sel, check_if_something_is_selected, &is); | |
364 gtk_widget_set_sensitive((GtkWidget*)data, is); | |
365 } | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
366 |
4348 | 367 static gboolean non_empty(const char *s) |
368 { | |
6250
1c8caacac1de
[gaim-migrate @ 6746]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
6116
diff
changeset
|
369 while(*s && g_ascii_isspace(*s)) |
4348 | 370 s++; |
371 return *s; | |
372 } | |
373 | |
374 static void on_entry_changed(GtkEditable *editable, gpointer data) | |
375 { | |
376 gtk_widget_set_sensitive((GtkWidget*)data, | |
377 non_empty(gtk_entry_get_text(GTK_ENTRY(bad_entry))) && | |
378 non_empty(gtk_entry_get_text(GTK_ENTRY(good_entry)))); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
379 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
380 |
3630 | 381 /* |
382 * EXPORTED FUNCTIONS | |
383 */ | |
384 | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
385 static gboolean |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
386 plugin_load(GaimPlugin *plugin) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
387 { |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6392
diff
changeset
|
388 void *conv_handle = gaim_conversations_get_handle(); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6392
diff
changeset
|
389 |
3630 | 390 load_conf(); |
391 | |
8579 | 392 gaim_signal_connect(conv_handle, "writing-im-msg", |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6392
diff
changeset
|
393 plugin, GAIM_CALLBACK(substitute_words), NULL); |
8579 | 394 gaim_signal_connect(conv_handle, "writing-chat-msg", |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6392
diff
changeset
|
395 plugin, GAIM_CALLBACK(substitute_words), NULL); |
3630 | 396 |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
397 return TRUE; |
3630 | 398 } |
399 | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
400 static GtkWidget * |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
401 get_config_frame(GaimPlugin *plugin) |
4348 | 402 { |
3565 | 403 GtkWidget *ret, *vbox, *win; |
4348 | 404 GtkWidget *hbox, *label; |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
405 GtkWidget *button; |
4348 | 406 GtkSizeGroup *sg; |
407 GtkCellRenderer *renderer; | |
408 GtkTreeViewColumn *column; | |
409 | |
410 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
3565 | 411 |
412 ret = gtk_vbox_new(FALSE, 18); | |
413 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6392
diff
changeset
|
414 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5227
diff
changeset
|
415 vbox = gaim_gtk_make_frame(ret, _("Text Replacements")); |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
416 gtk_container_set_border_width(GTK_CONTAINER(vbox), 4); |
4348 | 417 gtk_widget_set_size_request(vbox, 300, -1); |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
418 gtk_widget_show (vbox); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
419 |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
420 win = gtk_scrolled_window_new(0, 0); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
421 gtk_container_add(GTK_CONTAINER(vbox), win); |
4750
03ea71acade3
[gaim-migrate @ 5065]
Christian Hammond <chipx86@chipx86.com>
parents:
4601
diff
changeset
|
422 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(win), |
03ea71acade3
[gaim-migrate @ 5065]
Christian Hammond <chipx86@chipx86.com>
parents:
4601
diff
changeset
|
423 GTK_SHADOW_IN); |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
424 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (win), |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
425 GTK_POLICY_AUTOMATIC, |
4348 | 426 GTK_POLICY_AUTOMATIC); |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
427 gtk_widget_show(win); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
428 |
4348 | 429 tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model)); |
430 /* gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(tree), TRUE); */ | |
431 gtk_widget_set_size_request(tree, 260,200); | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6392
diff
changeset
|
432 |
4348 | 433 renderer = gtk_cell_renderer_text_new (); |
434 g_object_set (G_OBJECT (renderer), | |
435 "editable", TRUE, | |
436 NULL); | |
437 g_signal_connect(G_OBJECT(renderer), "edited", | |
438 G_CALLBACK(on_edited), GINT_TO_POINTER(0)); | |
439 column = gtk_tree_view_column_new_with_attributes (_("You type"), | |
440 renderer, "text", BAD_COLUMN, NULL); | |
441 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); | |
442 gtk_tree_view_column_set_fixed_width(column, 130); | |
443 /* gtk_tree_view_column_set_resizable(column, TRUE); */ | |
444 gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); | |
445 renderer = gtk_cell_renderer_text_new (); | |
446 g_object_set (G_OBJECT (renderer), | |
447 "editable", TRUE, | |
448 NULL); | |
449 g_signal_connect(G_OBJECT(renderer), "edited", | |
450 G_CALLBACK(on_edited), GINT_TO_POINTER(1)); | |
451 column = gtk_tree_view_column_new_with_attributes (_("You send"), | |
452 renderer, "text", GOOD_COLUMN, NULL); | |
453 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); | |
454 gtk_tree_view_column_set_fixed_width(column, 130); | |
455 /* gtk_tree_view_column_set_resizable(column, TRUE); */ | |
456 gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); | |
457 gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)), | |
458 GTK_SELECTION_MULTIPLE); | |
459 gtk_container_add(GTK_CONTAINER(win), tree); | |
460 gtk_widget_show(tree); | |
461 | |
462 hbox = gtk_hbutton_box_new(); | |
463 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
464 gtk_widget_show(hbox); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
465 |
4348 | 466 button = gtk_button_new_from_stock(GTK_STOCK_DELETE); |
467 g_signal_connect(G_OBJECT(button), "clicked", | |
468 G_CALLBACK(list_delete), NULL); | |
469 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
470 gtk_widget_set_sensitive(button, FALSE); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
471 |
4348 | 472 g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(tree))), |
473 "changed", G_CALLBACK(on_selection_changed), button); | |
474 | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
475 gtk_widget_show(button); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
476 |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5227
diff
changeset
|
477 vbox = gaim_gtk_make_frame(ret, _("Add a new text replacement")); |
4348 | 478 gtk_widget_set_size_request(vbox, 300, -1); |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
479 |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
480 hbox = gtk_hbox_new(FALSE, 2); |
4348 | 481 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
482 gtk_widget_show(hbox); | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6392
diff
changeset
|
483 |
4348 | 484 label = gtk_label_new_with_mnemonic(_("You _type:")); |
485 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
486 | |
487 bad_entry = gtk_entry_new(); | |
488 gtk_entry_set_max_length(GTK_ENTRY(bad_entry), 40); | |
489 gtk_box_pack_start(GTK_BOX(hbox), bad_entry, TRUE, TRUE, 0); | |
490 gtk_size_group_add_widget(sg, bad_entry); | |
491 gtk_label_set_mnemonic_widget(GTK_LABEL(label), bad_entry); | |
492 gtk_widget_show(bad_entry); | |
493 | |
494 hbox = gtk_hbox_new(FALSE, 2); | |
495 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
496 gtk_widget_show(hbox); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
497 |
4348 | 498 label = gtk_label_new_with_mnemonic(_("You _send:")); |
499 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
500 |
4348 | 501 good_entry = gtk_entry_new(); |
502 gtk_entry_set_max_length(GTK_ENTRY(good_entry), 255); | |
503 gtk_box_pack_start(GTK_BOX(hbox), good_entry, TRUE, TRUE, 0); | |
504 gtk_size_group_add_widget(sg, good_entry); | |
505 gtk_label_set_mnemonic_widget(GTK_LABEL(label), good_entry); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
506 gtk_widget_show(good_entry); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
507 |
4348 | 508 hbox = gtk_hbutton_box_new(); |
509 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
510 button = gtk_button_new_from_stock(GTK_STOCK_ADD); | |
511 g_signal_connect(G_OBJECT(button), "clicked", | |
512 G_CALLBACK(list_add_new), NULL); | |
513 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
514 g_signal_connect(G_OBJECT(bad_entry), "changed", G_CALLBACK(on_entry_changed), button); | |
515 g_signal_connect(G_OBJECT(good_entry), "changed", G_CALLBACK(on_entry_changed), button); | |
516 gtk_widget_set_sensitive(button, FALSE); | |
517 gtk_widget_show(button); | |
518 | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
519 |
3565 | 520 gtk_widget_show_all(ret); |
521 return ret; | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
522 } |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
523 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
524 static GaimGtkPluginUiInfo ui_info = |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
525 { |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
526 get_config_frame |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
527 }; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
528 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
529 static GaimPluginInfo info = |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
530 { |
9943 | 531 GAIM_PLUGIN_MAGIC, |
532 GAIM_MAJOR_VERSION, | |
533 GAIM_MINOR_VERSION, | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
534 GAIM_PLUGIN_STANDARD, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
535 GAIM_GTK_PLUGIN_TYPE, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
536 0, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
537 NULL, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
538 GAIM_PRIORITY_DEFAULT, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
539 SPELLCHECK_PLUGIN_ID, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
540 N_("Text replacement"), |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
541 VERSION, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
542 N_("Replaces text in outgoing messages according to user-defined rules."), |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
543 N_("Replaces text in outgoing messages according to user-defined rules."), |
6392
e9974608b319
[gaim-migrate @ 6897]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
544 "Eric Warmenhoven <eric@warmenhoven.org>", |
6371
8f94cce8faa5
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6250
diff
changeset
|
545 GAIM_WEBSITE, |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
546 plugin_load, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
547 NULL, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
548 NULL, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
549 &ui_info, |
8993 | 550 NULL, |
551 NULL, | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
552 NULL |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
553 }; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
554 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
555 static void |
5920
7d385de2f9cd
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5873
diff
changeset
|
556 init_plugin(GaimPlugin *plugin) |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
557 { |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
558 } |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
559 |
6063 | 560 GAIM_INIT_PLUGIN(spellcheck, init_plugin, info) |