Mercurial > pidgin.yaz
annotate plugins/spellchk.c @ 5205:fefad67de2c7
[gaim-migrate @ 5573]
I had a damn good commit message, but it was eaten. Let's try it again.
Announcing, Gaim Plugin API version 2.0, or GPAPIV2.0 for short.
There are lots'a cool thingies here.
Okay now, this isn't as cool as the previous message, but:
1) There's now a single entry function for all plugin types. It returns a
detailed information structure on the plugin. This removes a lot of the
ugliness from old plugins. Oh yeah, libicq wasn't converted to this, so
if you use it, well, you shouldn't have used it anyway, but now you
can't! bwahahaha. Use AIM/ICQ.
2) There are now 3 types of plugins: Standard, Loader, and Protocol
plugins.
Standard plugins are, well, standard, compiled plugins.
Loader plugins load other plugins. For example, the perl support is now
a loader plugin. It loads perl scripts. In the future, we'll have
Ruby and Python loader plugins.
Protocol plugins are, well, protocol plugins... yeah...
3) Plugins have unique IDs, so they can be referred to or automatically
updated from a plugin database in the future. Neat, huh?
4) Plugins will have dependency support in the future, and can be hidden,
so if you have, say, a logging core plugin, it won't have to show up,
but then you load the GTK+ logging plugin and it'll auto-load the core
plugin. Core/UI split plugins!
5) There will eventually be custom plugin signals and RPC of some sort, for
the core/ui split plugins.
So, okay, back up .gaimrc.
I'd like to thank my parents for their support, javabsp for helping convert
a bunch of protocol plugins, and Etan for helping convert a bunch of
standard plugins.
Have fun. If you have any problems, please let me know, but you probably
won't have anything major happen. You will have to convert your plugins,
though, and I'm not guaranteeing that all perl scripts will still work.
I'll end up changing the perl script API eventually, so I know they won't
down the road. Don't worry, though. It'll be mass cool.
faceprint wants me to just commit the damn code already. So, here we go!!!
..
..
I need a massage. From a young, cute girl. Are there any young, cute girls
in the audience? IM me plz k thx.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Fri, 25 Apr 2003 06:47:33 +0000 |
parents | 03ea71acade3 |
children | 6d1707dc8c3d |
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 * |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
5 * TODO: |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
6 * ? I think i did everything i want to with it. |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
7 * |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
8 * BUGS: |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
9 * ? I think i fixed them all. |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
10 */ |
4202
59751fe608c5
[gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents:
4165
diff
changeset
|
11 #include "config.h" |
59751fe608c5
[gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents:
4165
diff
changeset
|
12 |
103 | 13 #include "gaim.h" |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
14 #include "gtkplugin.h" |
103 | 15 |
16 #include <string.h> | |
17 #include <ctype.h> | |
18 #include <stdlib.h> | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
19 #include <sys/stat.h> |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
20 #include <sys/types.h> |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
21 #include <unistd.h> |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
22 #include <fcntl.h> |
3630 | 23 #ifdef _WIN32 |
24 #include "win32dep.h" | |
25 #endif | |
103 | 26 |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
27 #define SPELLCHECK_PLUGIN_ID "gtk-spellcheck" |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
28 |
4348 | 29 enum { |
30 BAD_COLUMN, | |
31 GOOD_COLUMN, | |
32 N_COLUMNS | |
103 | 33 }; |
34 | |
4348 | 35 static int num_words(const char *); |
1081
efcacae6acdb
[gaim-migrate @ 1091]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1047
diff
changeset
|
36 static int get_word(char *, int); |
efcacae6acdb
[gaim-migrate @ 1091]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1047
diff
changeset
|
37 static char *have_word(char *, int); |
4348 | 38 static void substitute(char **, int, int, const char *); |
39 static GtkListStore *model; | |
103 | 40 |
1081
efcacae6acdb
[gaim-migrate @ 1091]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1047
diff
changeset
|
41 static void substitute_words(struct gaim_connection *gc, char *who, char **message, void *m) { |
103 | 42 int i, l; |
43 int word; | |
44 char *tmp; | |
45 | |
46 if (message == NULL || *message == NULL) | |
47 return; | |
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 } | |
76 } | |
77 | |
1081
efcacae6acdb
[gaim-migrate @ 1091]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1047
diff
changeset
|
78 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
|
79 int pos = *position, spos = pos; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
80 |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
81 if (pos == len) |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
82 return 0; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
83 |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
84 while (ibuf[pos++] != '\n') { |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
85 if (pos == len) |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
86 return 0; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
87 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
88 pos--; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
89 ibuf[pos] = 0; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
90 *buf = &ibuf[spos]; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
91 pos++; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
92 *position = pos; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
93 return 1; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
94 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
95 |
1081
efcacae6acdb
[gaim-migrate @ 1091]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1047
diff
changeset
|
96 static void load_conf() { |
4348 | 97 const char * const defaultconf = "BAD r\nGOOD are\n\n" |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
98 "BAD u\nGOOD you\n\n" |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
99 "BAD teh\nGOOD the\n\n"; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
100 char *buf, *ibuf; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
101 char name[82]; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
102 char cmd[256]; |
4348 | 103 int pnt = 0; |
104 gsize size; | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
105 |
4348 | 106 model = gtk_list_store_new((gint)N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING); |
103 | 107 |
4348 | 108 buf = g_build_filename(gaim_home_dir(), ".gaim", "dict", NULL); |
109 g_file_get_contents(buf, &ibuf, &size, NULL); | |
110 free(buf); | |
111 if(!ibuf) { | |
112 ibuf = g_strdup(defaultconf); | |
113 size = strlen(defaultconf); | |
106
e05e6373ea5a
[gaim-migrate @ 116]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
103
diff
changeset
|
114 } |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
115 |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
116 cmd[0] = 0; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
117 name[0] = 0; |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
118 |
4348 | 119 while(buf_get_line(ibuf, &buf, &pnt, size)) { |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
120 if (*buf != '#') { |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
121 if (!strncasecmp(buf, "BAD ", 4)) |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
122 strncpy(name, buf + 4, 81); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
123 if (!strncasecmp(buf, "GOOD ", 5)) { |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
124 strncpy(cmd, buf + 5, 255); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
125 if (*name) { |
4348 | 126 GtkTreeIter iter; |
127 gtk_list_store_append(model, &iter); | |
128 gtk_list_store_set(model, &iter, | |
129 0, g_strdup(name), | |
130 1, g_strdup(cmd), | |
131 -1); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
132 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
133 } |
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 free(ibuf); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
137 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
138 |
103 | 139 |
140 | |
4348 | 141 static int num_words(const char *m) { |
103 | 142 int count = 0; |
143 int pos; | |
144 int state = 0; | |
145 | |
146 for (pos = 0; pos < strlen(m); pos++) { | |
147 switch (state) { | |
148 case 0: /* expecting word */ | |
1873
08ac51210d09
[gaim-migrate @ 1883]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1862
diff
changeset
|
149 if (!isspace(m[pos]) && !ispunct(m[pos])) { |
103 | 150 count++; |
151 state = 1; | |
152 } else if (m[pos] == '<') | |
153 state = 2; | |
154 break; | |
155 case 1: /* inside word */ | |
112
a57fd3390ee4
[gaim-migrate @ 122]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
111
diff
changeset
|
156 if (m[pos] == '<') |
a57fd3390ee4
[gaim-migrate @ 122]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
111
diff
changeset
|
157 state = 2; |
1873
08ac51210d09
[gaim-migrate @ 1883]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1862
diff
changeset
|
158 else if (isspace(m[pos]) || ispunct(m[pos])) |
103 | 159 state = 0; |
160 break; | |
161 case 2: /* inside HTML tag */ | |
162 if (m[pos] == '>') | |
163 state = 0; | |
164 break; | |
165 } | |
166 } | |
167 return count; | |
168 } | |
169 | |
1081
efcacae6acdb
[gaim-migrate @ 1091]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1047
diff
changeset
|
170 static int get_word(char *m, int word) { |
103 | 171 int count = 0; |
172 int pos = 0; | |
173 int state = 0; | |
174 | |
175 for (pos = 0; pos < strlen(m) && count <= word; pos++) { | |
176 switch (state) { | |
177 case 0: | |
1862
fd60aa357882
[gaim-migrate @ 1872]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1740
diff
changeset
|
178 if (!isspace(m[pos]) && !ispunct(m[pos])) { |
103 | 179 count++; |
180 state = 1; | |
181 } else if (m[pos] == '<') | |
182 state = 2; | |
183 break; | |
184 case 1: | |
112
a57fd3390ee4
[gaim-migrate @ 122]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
111
diff
changeset
|
185 if (m[pos] == '<') |
a57fd3390ee4
[gaim-migrate @ 122]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
111
diff
changeset
|
186 state = 2; |
1862
fd60aa357882
[gaim-migrate @ 1872]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1740
diff
changeset
|
187 else if (isspace(m[pos]) || ispunct(m[pos])) |
103 | 188 state = 0; |
189 break; | |
190 case 2: | |
191 if (m[pos] == '>') | |
192 state = 0; | |
193 break; | |
194 } | |
195 } | |
196 return pos - 1; | |
197 } | |
198 | |
1081
efcacae6acdb
[gaim-migrate @ 1091]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1047
diff
changeset
|
199 static char *have_word(char *m, int pos) { |
3733 | 200 char *tmp = strpbrk(&m[pos], "' \t\f\r\n\"><.?!-,/"); |
103 | 201 int len = (int)(tmp - &m[pos]); |
202 | |
203 if (tmp == NULL) { | |
204 tmp = strdup(&m[pos]); | |
205 return tmp; | |
206 } | |
207 | |
208 tmp = malloc(len + 1); | |
209 tmp[0] = 0; | |
210 strncat(tmp, &m[pos], len); | |
211 | |
212 return tmp; | |
213 } | |
214 | |
4348 | 215 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
|
216 char *new = g_malloc(strlen(*mes) + strlen(text) + 1); |
103 | 217 char *tmp; |
218 new[0] = 0; | |
219 | |
220 strncat(new, *mes, pos); | |
221 strcat(new, text); | |
222 | |
223 strcat(new, &(*mes)[pos + m]); | |
224 tmp = *mes; | |
225 *mes = new; | |
257
a93e273ca1d6
[gaim-migrate @ 267]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
208
diff
changeset
|
226 g_free(tmp); |
103 | 227 } |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
228 |
4348 | 229 static GtkWidget *tree; |
1081
efcacae6acdb
[gaim-migrate @ 1091]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1047
diff
changeset
|
230 static GtkWidget *bad_entry; |
efcacae6acdb
[gaim-migrate @ 1091]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1047
diff
changeset
|
231 static GtkWidget *good_entry; |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
232 |
4348 | 233 static void save_list(); |
234 | |
235 static void on_edited(GtkCellRendererText *cellrenderertext, | |
236 gchar *path, | |
237 gchar *arg2, | |
238 gpointer data) | |
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 printf("Editado! %s, %s\n", path, arg2); | |
253 } | |
254 g_value_unset(&val); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
255 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
256 |
4348 | 257 static void list_add_new() |
258 { | |
259 GtkTreeIter iter; | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
260 |
4348 | 261 gtk_list_store_append(model, &iter); |
262 gtk_list_store_set(model, &iter, | |
263 0, gtk_entry_get_text(GTK_ENTRY(bad_entry)), | |
264 1, gtk_entry_get_text(GTK_ENTRY(good_entry)), | |
265 -1); | |
266 gtk_editable_select_region(GTK_EDITABLE(bad_entry), 0, -1); | |
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 } | |
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 |
4348 | 311 name = g_build_filename(gaim_home_dir(), ".gaim", "dict", NULL); |
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)) { | |
342 debug_printf("Error writing to %s: %m\n", tempfilename); | |
343 unlink(tempfilename); | |
344 g_free(name); | |
345 return; | |
346 } | |
347 rename(tempfilename, name); | |
348 g_free(name); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
349 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
350 |
4348 | 351 static void |
352 check_if_something_is_selected(GtkTreeModel *model, | |
353 GtkTreePath *path, GtkTreeIter *iter, gpointer data) | |
354 { | |
355 *((gboolean*)data) = TRUE; | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
356 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
357 |
4348 | 358 static void on_selection_changed(GtkTreeSelection *sel, |
359 gpointer data) | |
360 { | |
361 gboolean is = FALSE; | |
362 gtk_tree_selection_selected_foreach(sel, check_if_something_is_selected, &is); | |
363 gtk_widget_set_sensitive((GtkWidget*)data, is); | |
364 } | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
365 |
4348 | 366 static gboolean non_empty(const char *s) |
367 { | |
368 while(*s && isspace(*s)) | |
369 s++; | |
370 return *s; | |
371 } | |
372 | |
373 static void on_entry_changed(GtkEditable *editable, gpointer data) | |
374 { | |
375 gtk_widget_set_sensitive((GtkWidget*)data, | |
376 non_empty(gtk_entry_get_text(GTK_ENTRY(bad_entry))) && | |
377 non_empty(gtk_entry_get_text(GTK_ENTRY(good_entry)))); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
378 } |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
379 |
3630 | 380 /* |
381 * EXPORTED FUNCTIONS | |
382 */ | |
383 | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
384 static gboolean |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
385 plugin_load(GaimPlugin *plugin) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
386 { |
3630 | 387 load_conf(); |
388 | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
389 gaim_signal_connect(plugin, event_im_send, substitute_words, NULL); |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
390 gaim_signal_connect(plugin, event_chat_send, substitute_words, NULL); |
3630 | 391 |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
392 return TRUE; |
3630 | 393 } |
394 | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
395 static GtkWidget * |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
396 get_config_frame(GaimPlugin *plugin) |
4348 | 397 { |
3565 | 398 GtkWidget *ret, *vbox, *win; |
4348 | 399 GtkWidget *hbox, *label; |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
400 GtkWidget *button; |
4348 | 401 GtkSizeGroup *sg; |
402 GtkCellRenderer *renderer; | |
403 GtkTreeViewColumn *column; | |
404 | |
405 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
3565 | 406 |
407 ret = gtk_vbox_new(FALSE, 18); | |
408 gtk_container_set_border_width (GTK_CONTAINER (ret), 12); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
409 |
3565 | 410 vbox = make_frame(ret, _("Text Replacements")); |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
411 gtk_container_set_border_width(GTK_CONTAINER(vbox), 4); |
4348 | 412 gtk_widget_set_size_request(vbox, 300, -1); |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
413 gtk_widget_show (vbox); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
414 |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
415 win = gtk_scrolled_window_new(0, 0); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
416 gtk_container_add(GTK_CONTAINER(vbox), win); |
4750
03ea71acade3
[gaim-migrate @ 5065]
Christian Hammond <chipx86@chipx86.com>
parents:
4601
diff
changeset
|
417 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(win), |
03ea71acade3
[gaim-migrate @ 5065]
Christian Hammond <chipx86@chipx86.com>
parents:
4601
diff
changeset
|
418 GTK_SHADOW_IN); |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
419 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (win), |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
420 GTK_POLICY_AUTOMATIC, |
4348 | 421 GTK_POLICY_AUTOMATIC); |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
422 gtk_widget_show(win); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
423 |
4348 | 424 tree = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model)); |
425 /* gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(tree), TRUE); */ | |
426 gtk_widget_set_size_request(tree, 260,200); | |
427 | |
428 renderer = gtk_cell_renderer_text_new (); | |
429 g_object_set (G_OBJECT (renderer), | |
430 "editable", TRUE, | |
431 NULL); | |
432 g_signal_connect(G_OBJECT(renderer), "edited", | |
433 G_CALLBACK(on_edited), GINT_TO_POINTER(0)); | |
434 column = gtk_tree_view_column_new_with_attributes (_("You type"), | |
435 renderer, "text", BAD_COLUMN, NULL); | |
436 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); | |
437 gtk_tree_view_column_set_fixed_width(column, 130); | |
438 /* gtk_tree_view_column_set_resizable(column, TRUE); */ | |
439 gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); | |
440 renderer = gtk_cell_renderer_text_new (); | |
441 g_object_set (G_OBJECT (renderer), | |
442 "editable", TRUE, | |
443 NULL); | |
444 g_signal_connect(G_OBJECT(renderer), "edited", | |
445 G_CALLBACK(on_edited), GINT_TO_POINTER(1)); | |
446 column = gtk_tree_view_column_new_with_attributes (_("You send"), | |
447 renderer, "text", GOOD_COLUMN, NULL); | |
448 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED); | |
449 gtk_tree_view_column_set_fixed_width(column, 130); | |
450 /* gtk_tree_view_column_set_resizable(column, TRUE); */ | |
451 gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column); | |
452 gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)), | |
453 GTK_SELECTION_MULTIPLE); | |
454 gtk_container_add(GTK_CONTAINER(win), tree); | |
455 gtk_widget_show(tree); | |
456 | |
457 hbox = gtk_hbutton_box_new(); | |
458 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
|
459 gtk_widget_show(hbox); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
460 |
4348 | 461 button = gtk_button_new_from_stock(GTK_STOCK_DELETE); |
462 g_signal_connect(G_OBJECT(button), "clicked", | |
463 G_CALLBACK(list_delete), NULL); | |
464 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
465 gtk_widget_set_sensitive(button, FALSE); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
466 |
4348 | 467 g_signal_connect(G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(tree))), |
468 "changed", G_CALLBACK(on_selection_changed), button); | |
469 | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
470 gtk_widget_show(button); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
471 |
4348 | 472 vbox = make_frame(ret, _("Add a new text replacement")); |
473 gtk_widget_set_size_request(vbox, 300, -1); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
474 |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
475 hbox = gtk_hbox_new(FALSE, 2); |
4348 | 476 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
477 gtk_widget_show(hbox); | |
478 | |
479 label = gtk_label_new_with_mnemonic(_("You _type:")); | |
480 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
481 | |
482 bad_entry = gtk_entry_new(); | |
483 gtk_entry_set_max_length(GTK_ENTRY(bad_entry), 40); | |
484 gtk_box_pack_start(GTK_BOX(hbox), bad_entry, TRUE, TRUE, 0); | |
485 gtk_size_group_add_widget(sg, bad_entry); | |
486 gtk_label_set_mnemonic_widget(GTK_LABEL(label), bad_entry); | |
487 gtk_widget_show(bad_entry); | |
488 | |
489 hbox = gtk_hbox_new(FALSE, 2); | |
490 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
|
491 gtk_widget_show(hbox); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
492 |
4348 | 493 label = gtk_label_new_with_mnemonic(_("You _send:")); |
494 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
|
495 |
4348 | 496 good_entry = gtk_entry_new(); |
497 gtk_entry_set_max_length(GTK_ENTRY(good_entry), 255); | |
498 gtk_box_pack_start(GTK_BOX(hbox), good_entry, TRUE, TRUE, 0); | |
499 gtk_size_group_add_widget(sg, good_entry); | |
500 gtk_label_set_mnemonic_widget(GTK_LABEL(label), good_entry); | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
501 gtk_widget_show(good_entry); |
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
502 |
4348 | 503 hbox = gtk_hbutton_box_new(); |
504 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
505 button = gtk_button_new_from_stock(GTK_STOCK_ADD); | |
506 g_signal_connect(G_OBJECT(button), "clicked", | |
507 G_CALLBACK(list_add_new), NULL); | |
508 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); | |
509 g_signal_connect(G_OBJECT(bad_entry), "changed", G_CALLBACK(on_entry_changed), button); | |
510 g_signal_connect(G_OBJECT(good_entry), "changed", G_CALLBACK(on_entry_changed), button); | |
511 gtk_widget_set_sensitive(button, FALSE); | |
512 gtk_widget_show(button); | |
513 | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
514 |
3565 | 515 gtk_widget_show_all(ret); |
516 return ret; | |
111
d927bb34e2c6
[gaim-migrate @ 121]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
106
diff
changeset
|
517 } |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
518 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
519 static GaimGtkPluginUiInfo ui_info = |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
520 { |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
521 get_config_frame |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
522 }; |
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 GaimPluginInfo 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 2, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
527 GAIM_PLUGIN_STANDARD, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
528 GAIM_GTK_PLUGIN_TYPE, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
529 0, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
530 NULL, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
531 GAIM_PRIORITY_DEFAULT, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
532 SPELLCHECK_PLUGIN_ID, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
533 N_("Text replacement"), |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
534 VERSION, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
535 N_("Replaces text in outgoing messages according to user-defined rules."), |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
536 N_("Replaces text in outgoing messages according to user-defined rules."), |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
537 "Eric Warmnenhoven <eric@warmenhoven.org>", |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
538 WEBSITE, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
539 plugin_load, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
540 NULL, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
541 NULL, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
542 &ui_info, |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
543 NULL |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
544 }; |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
545 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
546 static void |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
547 __init_plugin(GaimPlugin *plugin) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
548 { |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
549 } |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
550 |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
4750
diff
changeset
|
551 GAIM_INIT_PLUGIN(spellcheck, __init_plugin, info); |