Fri, 10 Nov 2000 22:49:02 +0000
[gaim-migrate @ 1091]
libfaim connects non-blocking
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
1 | /* |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
2 | * A lot of this code (especially the config code) was taken directly |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
3 | * or nearly directly from xchat, version 1.4.2 by Peter Zelezny and others. |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
4 | * |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
5 | * TODO: |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
6 | * ? I think i did everything i want to with it. |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
7 | * |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
8 | * BUGS: |
|
112
232fe3aea76f
[gaim-migrate @ 122]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
111
diff
changeset
|
9 | * ? I think i fixed them all. |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
10 | */ |
| 103 | 11 | #define GAIM_PLUGINS |
| 12 | #include "gaim.h" | |
| 13 | ||
| 14 | #include <string.h> | |
| 15 | #include <ctype.h> | |
| 16 | #include <stdlib.h> | |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
17 | #include <sys/stat.h> |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
18 | #include <sys/types.h> |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
19 | #include <unistd.h> |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
20 | #include <fcntl.h> |
| 103 | 21 | |
| 22 | struct replace_words { | |
| 23 | char *bad; | |
| 24 | char *good; | |
| 25 | }; | |
| 26 | ||
| 27 | GList *words = NULL; | |
| 28 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
29 | static int num_words(char *); |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
30 | static int get_word(char *, int); |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
31 | static char *have_word(char *, int); |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
32 | static void substitute(char **, int, int, char *); |
| 103 | 33 | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
34 | static void substitute_words(struct gaim_connection *gc, char *who, char **message, void *m) { |
| 103 | 35 | int i, l; |
| 36 | int word; | |
| 37 | GList *w; | |
| 38 | char *tmp; | |
| 39 | ||
| 40 | if (message == NULL || *message == NULL) | |
| 41 | return; | |
| 42 | ||
| 43 | l = num_words(*message); | |
| 44 | for (i = 0; i < l; i++) { | |
| 45 | word = get_word(*message, i); | |
| 46 | w = words; | |
| 47 | while (w) { | |
| 48 | struct replace_words *r; | |
| 49 | r = (struct replace_words *)(w->data); | |
| 50 | tmp = have_word(*message, word); | |
|
138
96e94ba5be76
[gaim-migrate @ 148]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
123
diff
changeset
|
51 | if (!strcmp(tmp, r->bad)) { |
| 103 | 52 | substitute(message, word, strlen(r->bad), |
| 53 | r->good); | |
|
112
232fe3aea76f
[gaim-migrate @ 122]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
111
diff
changeset
|
54 | l += num_words(r->good) - num_words(r->bad); |
|
232fe3aea76f
[gaim-migrate @ 122]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
111
diff
changeset
|
55 | i += num_words(r->good) - num_words(r->bad); |
|
232fe3aea76f
[gaim-migrate @ 122]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
111
diff
changeset
|
56 | } |
| 103 | 57 | free(tmp); |
| 58 | w = w->next; | |
| 59 | } | |
| 60 | } | |
| 61 | } | |
| 62 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
63 | static int buf_get_line(char *ibuf, char **buf, int *position, int len) { |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
64 | int pos = *position, spos = pos; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
65 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
66 | if (pos == len) |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
67 | return 0; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
68 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
69 | while (ibuf[pos++] != '\n') { |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
70 | if (pos == len) |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
71 | return 0; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
72 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
73 | pos--; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
74 | ibuf[pos] = 0; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
75 | *buf = &ibuf[spos]; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
76 | pos++; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
77 | *position = pos; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
78 | return 1; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
79 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
80 | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
81 | static void load_conf() { |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
82 | char *defaultconf = "BAD r\nGOOD are\n\n" |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
83 | "BAD u\nGOOD you\n\n" |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
84 | "BAD teh\nGOOD the\n\n"; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
85 | char *buf, *ibuf; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
86 | char name[82]; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
87 | char cmd[256]; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
88 | int fh, pnt = 0; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
89 | struct stat st; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
90 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
91 | if (words != NULL) |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
92 | g_list_free(words); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
93 | words = NULL; |
| 103 | 94 | |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
95 | buf = malloc(1000); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
96 | snprintf(buf, 1000, "%s/.gaim/dict", getenv("HOME")); |
|
123
cc3f0c97ea54
[gaim-migrate @ 133]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
113
diff
changeset
|
97 | fh = open(buf, O_RDONLY, 0600); |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
98 | if (fh == -1) { |
|
123
cc3f0c97ea54
[gaim-migrate @ 133]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
113
diff
changeset
|
99 | fh = open(buf, O_TRUNC | O_WRONLY | O_CREAT, 0600); |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
100 | if (fh != -1) { |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
101 | write(fh, defaultconf, strlen(defaultconf)); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
102 | close(fh); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
103 | free(buf); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
104 | load_conf(); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
105 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
106 | return; |
|
106
420c81f47ca3
[gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
103
diff
changeset
|
107 | } |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
108 | free(buf); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
109 | if (fstat(fh, &st) != 0) |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
110 | return; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
111 | ibuf = malloc(st.st_size); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
112 | read(fh, ibuf, st.st_size); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
113 | close(fh); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
114 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
115 | cmd[0] = 0; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
116 | name[0] = 0; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
117 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
118 | while(buf_get_line(ibuf, &buf, &pnt, st.st_size)) { |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
119 | if (*buf != '#') { |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
120 | if (!strncasecmp(buf, "BAD ", 4)) |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
121 | strncpy(name, buf + 4, 81); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
122 | if (!strncasecmp(buf, "GOOD ", 5)) { |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
123 | strncpy(cmd, buf + 5, 255); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
124 | if (*name) { |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
125 | struct replace_words *r; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
126 | r = malloc(sizeof *r); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
127 | r->bad = strdup(name); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
128 | r->good = strdup(cmd); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
129 | words = g_list_append(words, r); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
130 | cmd[0] = 0; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
131 | name[0] = 0; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
132 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
133 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
134 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
135 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
136 | free(ibuf); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
137 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
138 | |
|
1047
783f8520d9a0
[gaim-migrate @ 1057]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1000
diff
changeset
|
139 | char *gaim_plugin_init(GModule *handle) { |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
140 | load_conf(); |
| 103 | 141 | |
|
208
7fd6e9df3e45
[gaim-migrate @ 218]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
138
diff
changeset
|
142 | gaim_signal_connect(handle, event_im_send, substitute_words, NULL); |
|
391
677e4414a83f
[gaim-migrate @ 401]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
257
diff
changeset
|
143 | gaim_signal_connect(handle, event_chat_send, substitute_words, NULL); |
|
1047
783f8520d9a0
[gaim-migrate @ 1057]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1000
diff
changeset
|
144 | return NULL; |
| 103 | 145 | } |
| 146 | ||
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
147 | void gaim_plugin_remove() { |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
148 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
149 | |
| 103 | 150 | char *name() { |
| 151 | return "IM Spell Check"; | |
| 152 | } | |
| 153 | ||
| 154 | char *description() { | |
| 155 | return "Watches outgoing IM text and corrects common spelling errors."; | |
| 156 | } | |
| 157 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
158 | static int num_words(char *m) { |
| 103 | 159 | int count = 0; |
| 160 | int pos; | |
| 161 | int state = 0; | |
| 162 | ||
| 163 | for (pos = 0; pos < strlen(m); pos++) { | |
| 164 | switch (state) { | |
| 165 | case 0: /* expecting word */ | |
| 166 | if (isalnum(m[pos])) { | |
| 167 | count++; | |
| 168 | state = 1; | |
| 169 | } else if (m[pos] == '<') | |
| 170 | state = 2; | |
| 171 | break; | |
| 172 | case 1: /* inside word */ | |
|
112
232fe3aea76f
[gaim-migrate @ 122]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
111
diff
changeset
|
173 | if (m[pos] == '<') |
|
232fe3aea76f
[gaim-migrate @ 122]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
111
diff
changeset
|
174 | state = 2; |
|
232fe3aea76f
[gaim-migrate @ 122]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
111
diff
changeset
|
175 | else if (!isalnum(m[pos])) |
| 103 | 176 | state = 0; |
| 177 | break; | |
| 178 | case 2: /* inside HTML tag */ | |
| 179 | if (m[pos] == '>') | |
| 180 | state = 0; | |
| 181 | break; | |
| 182 | } | |
| 183 | } | |
| 184 | return count; | |
| 185 | } | |
| 186 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
187 | static int get_word(char *m, int word) { |
| 103 | 188 | int count = 0; |
| 189 | int pos = 0; | |
| 190 | int state = 0; | |
| 191 | ||
| 192 | for (pos = 0; pos < strlen(m) && count <= word; pos++) { | |
| 193 | switch (state) { | |
| 194 | case 0: | |
| 195 | if (isalnum(m[pos])) { | |
| 196 | count++; | |
| 197 | state = 1; | |
| 198 | } else if (m[pos] == '<') | |
| 199 | state = 2; | |
| 200 | break; | |
| 201 | case 1: | |
|
112
232fe3aea76f
[gaim-migrate @ 122]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
111
diff
changeset
|
202 | if (m[pos] == '<') |
|
232fe3aea76f
[gaim-migrate @ 122]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
111
diff
changeset
|
203 | state = 2; |
|
232fe3aea76f
[gaim-migrate @ 122]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
111
diff
changeset
|
204 | else if (!isalnum(m[pos])) |
| 103 | 205 | state = 0; |
| 206 | break; | |
| 207 | case 2: | |
| 208 | if (m[pos] == '>') | |
| 209 | state = 0; | |
| 210 | break; | |
| 211 | } | |
| 212 | } | |
| 213 | return pos - 1; | |
| 214 | } | |
| 215 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
216 | static char *have_word(char *m, int pos) { |
|
113
b57a562f0b24
[gaim-migrate @ 123]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
112
diff
changeset
|
217 | char *tmp = strpbrk(&m[pos], "' \t\f\r\n\".?!-,"); |
| 103 | 218 | int len = (int)(tmp - &m[pos]); |
| 219 | ||
| 220 | if (tmp == NULL) { | |
| 221 | tmp = strdup(&m[pos]); | |
| 222 | return tmp; | |
| 223 | } | |
| 224 | ||
| 225 | tmp = malloc(len + 1); | |
| 226 | tmp[0] = 0; | |
| 227 | strncat(tmp, &m[pos], len); | |
| 228 | ||
| 229 | return tmp; | |
| 230 | } | |
| 231 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
232 | static void substitute(char **mes, int pos, int m, char *text) { |
|
257
11380f0ee73e
[gaim-migrate @ 267]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
208
diff
changeset
|
233 | char *new = g_malloc(strlen(*mes) + strlen(text) + 1); |
| 103 | 234 | char *tmp; |
| 235 | new[0] = 0; | |
| 236 | ||
| 237 | strncat(new, *mes, pos); | |
| 238 | strcat(new, text); | |
| 239 | ||
| 240 | strcat(new, &(*mes)[pos + m]); | |
| 241 | tmp = *mes; | |
| 242 | *mes = new; | |
|
257
11380f0ee73e
[gaim-migrate @ 267]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
208
diff
changeset
|
243 | g_free(tmp); |
| 103 | 244 | } |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
245 | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
246 | static GtkWidget *configwin = NULL; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
247 | static GtkWidget *list; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
248 | static GtkWidget *bad_entry; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
249 | static GtkWidget *good_entry; |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
250 | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
251 | static void row_unselect() { |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
252 | gtk_entry_set_text(GTK_ENTRY(bad_entry), ""); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
253 | gtk_entry_set_text(GTK_ENTRY(good_entry), ""); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
254 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
255 | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
256 | static void row_select() { |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
257 | char *badwrd, *goodwrd; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
258 | int row; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
259 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
260 | if (GTK_CLIST(list)->selection) |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
261 | row = (int) GTK_CLIST (list)->selection->data; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
262 | else |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
263 | row = -1; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
264 | if (row != -1) { |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
265 | gtk_clist_get_text(GTK_CLIST(list), row, 0, &badwrd); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
266 | gtk_clist_get_text(GTK_CLIST(list), row, 1, &goodwrd); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
267 | gtk_entry_set_text(GTK_ENTRY(bad_entry), badwrd); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
268 | gtk_entry_set_text(GTK_ENTRY(good_entry), goodwrd); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
269 | } else { |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
270 | row_unselect(); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
271 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
272 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
273 | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
274 | static void list_add_new() { |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
275 | int i; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
276 | gchar *item[2] = {"*NEW*", "EDIT ME"}; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
277 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
278 | i = gtk_clist_append(GTK_CLIST(list), item); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
279 | gtk_clist_select_row(GTK_CLIST(list), i, 0); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
280 | gtk_clist_moveto(GTK_CLIST(list), i, 0, 0.5, 0); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
281 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
282 | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
283 | static void list_delete() { |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
284 | int row; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
285 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
286 | if (GTK_CLIST(list)->selection) |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
287 | row = (int) GTK_CLIST (list)->selection->data; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
288 | else |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
289 | row = -1; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
290 | if (row != -1) { |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
291 | gtk_clist_unselect_all(GTK_CLIST(list)); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
292 | gtk_clist_remove(GTK_CLIST(list), row); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
293 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
294 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
295 | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
296 | static void close_config() { |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
297 | if (configwin) |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
298 | gtk_widget_destroy(configwin); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
299 | configwin = NULL; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
300 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
301 | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
302 | static void save_list() { |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
303 | int fh, i = 0; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
304 | char buf[512]; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
305 | char *a, *b; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
306 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
307 | snprintf(buf, sizeof buf, "%s/.gaim/dict", getenv("HOME")); |
|
123
cc3f0c97ea54
[gaim-migrate @ 133]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
113
diff
changeset
|
308 | fh = open(buf, O_TRUNC | O_WRONLY | O_CREAT, 0600); |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
309 | if (fh != 1) { |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
310 | while (gtk_clist_get_text(GTK_CLIST(list), i, 0, &a)) { |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
311 | gtk_clist_get_text(GTK_CLIST(list), i, 1, &b); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
312 | snprintf(buf, sizeof buf, "BAD %s\nGOOD %s\n\n", a, b); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
313 | write(fh, buf, strlen(buf)); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
314 | i++; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
315 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
316 | close (fh); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
317 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
318 | close_config(); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
319 | load_conf(); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
320 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
321 | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
322 | static void bad_changed() { |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
323 | int row; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
324 | char *m; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
325 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
326 | if (GTK_CLIST(list)->selection) |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
327 | row = (int) GTK_CLIST (list)->selection->data; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
328 | else |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
329 | row = -1; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
330 | if (row != -1) { |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
331 | m = gtk_entry_get_text(GTK_ENTRY(bad_entry)); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
332 | gtk_clist_set_text(GTK_CLIST(list), row, 0, m); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
333 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
334 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
335 | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1047
diff
changeset
|
336 | static void good_changed() { |
|
111
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
337 | int row; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
338 | char *m; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
339 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
340 | if (GTK_CLIST(list)->selection) |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
341 | row = (int) GTK_CLIST (list)->selection->data; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
342 | else |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
343 | row = -1; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
344 | if (row != -1) { |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
345 | m = gtk_entry_get_text(GTK_ENTRY(good_entry)); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
346 | gtk_clist_set_text(GTK_CLIST(list), row, 1, m); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
347 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
348 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
349 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
350 | void gaim_plugin_config() { |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
351 | GtkWidget *win; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
352 | GtkWidget *vbox; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
353 | GtkWidget *hbox; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
354 | GtkWidget *button; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
355 | GList *w = words; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
356 | struct replace_words *r; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
357 | char *pair[2] = {"Replace", "With"}; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
358 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
359 | if (configwin) return; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
360 | configwin = gtk_window_new(GTK_WINDOW_DIALOG); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
361 | gtk_widget_set_usize(configwin, 450, 250); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
362 | gtk_window_set_title(GTK_WINDOW(configwin), "Spell Check Config"); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
363 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
364 | vbox = gtk_vbox_new(0, 2); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
365 | gtk_container_set_border_width(GTK_CONTAINER(vbox), 4); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
366 | gtk_container_add(GTK_CONTAINER(configwin), vbox); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
367 | gtk_widget_show (vbox); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
368 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
369 | win = gtk_scrolled_window_new(0, 0); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
370 | gtk_container_add(GTK_CONTAINER(vbox), win); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
371 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (win), |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
372 | GTK_POLICY_AUTOMATIC, |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
373 | GTK_POLICY_ALWAYS); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
374 | gtk_widget_show(win); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
375 | list = gtk_clist_new_with_titles(2, pair); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
376 | gtk_clist_set_column_width(GTK_CLIST(list), 0, 90); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
377 | gtk_clist_set_selection_mode(GTK_CLIST(list), GTK_SELECTION_BROWSE); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
378 | gtk_clist_column_titles_passive(GTK_CLIST(list)); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
379 | gtk_container_add(GTK_CONTAINER(win), list); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
380 | gtk_signal_connect(GTK_OBJECT(list), "select_row", |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
381 | GTK_SIGNAL_FUNC(row_select), NULL); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
382 | gtk_signal_connect(GTK_OBJECT(list), "unselect_row", |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
383 | GTK_SIGNAL_FUNC(row_unselect), NULL); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
384 | gtk_widget_show(list); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
385 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
386 | hbox = gtk_hbox_new(FALSE, 2); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
387 | gtk_box_pack_end(GTK_BOX(vbox), hbox, 0, 0, 0); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
388 | gtk_widget_show(hbox); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
389 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
390 | button = gtk_button_new_with_label("Add New"); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
391 | gtk_signal_connect(GTK_OBJECT(button), "clicked", |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
392 | GTK_SIGNAL_FUNC(list_add_new), NULL); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
393 | gtk_box_pack_start(GTK_BOX(hbox), button, 0, 0, 0); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
394 | gtk_widget_set_usize(button, 100, 0); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
395 | gtk_widget_show(button); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
396 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
397 | button = gtk_button_new_with_label("Delete"); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
398 | gtk_signal_connect(GTK_OBJECT(button), "clicked", |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
399 | GTK_SIGNAL_FUNC(list_delete), NULL); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
400 | gtk_box_pack_start(GTK_BOX(hbox), button, 0, 0, 0); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
401 | gtk_widget_set_usize(button, 100, 0); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
402 | gtk_widget_show(button); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
403 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
404 | button = gtk_button_new_with_label("Cancel"); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
405 | gtk_signal_connect(GTK_OBJECT(button), "clicked", |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
406 | GTK_SIGNAL_FUNC(close_config), NULL); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
407 | gtk_box_pack_start(GTK_BOX(hbox), button, 0, 0, 0); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
408 | gtk_widget_set_usize(button, 100, 0); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
409 | gtk_widget_show(button); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
410 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
411 | button = gtk_button_new_with_label("Save"); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
412 | gtk_signal_connect(GTK_OBJECT(button), "clicked", |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
413 | GTK_SIGNAL_FUNC(save_list), NULL); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
414 | gtk_box_pack_start(GTK_BOX(hbox), button, 0, 0, 0); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
415 | gtk_widget_set_usize(button, 100, 0); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
416 | gtk_widget_show(button); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
417 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
418 | hbox = gtk_hbox_new(FALSE, 2); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
419 | gtk_box_pack_end(GTK_BOX(vbox), hbox, 0, 0, 0); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
420 | gtk_widget_show(hbox); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
421 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
422 | bad_entry = gtk_entry_new_with_max_length(40); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
423 | gtk_widget_set_usize(bad_entry, 96, 0); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
424 | gtk_signal_connect(GTK_OBJECT(bad_entry), "changed", |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
425 | GTK_SIGNAL_FUNC(bad_changed), NULL); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
426 | gtk_box_pack_start(GTK_BOX(hbox), bad_entry, 0, 0, 0); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
427 | gtk_widget_show(bad_entry); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
428 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
429 | good_entry = gtk_entry_new_with_max_length(255); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
430 | gtk_signal_connect(GTK_OBJECT(good_entry), "changed", |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
431 | GTK_SIGNAL_FUNC(good_changed), NULL); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
432 | gtk_container_add(GTK_CONTAINER(hbox), good_entry); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
433 | gtk_widget_show(good_entry); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
434 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
435 | while (w) { |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
436 | r = (struct replace_words *)(w->data); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
437 | pair[0] = r->bad; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
438 | pair[1] = r->good; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
439 | gtk_clist_append(GTK_CLIST(list), pair); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
440 | w = w->next; |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
441 | } |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
442 | |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
443 | gtk_widget_show(configwin); |
|
36f6e0baf0a0
[gaim-migrate @ 121]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
106
diff
changeset
|
444 | } |