root / hope.c
History | View | Annotate | Download (47.1 KB)
1 |
#include "hope.h" |
---|---|
2 |
#include "maintain.c" |
3 |
#include "user_dict.c" |
4 |
#include <gdk/gdkkeysyms.h> |
5 |
#include <glib/gprintf.h> |
6 |
|
7 |
PangoFontDescription *font_desc; |
8 |
PangoFontDescription *font_dsc; |
9 |
GtkRcStyle *rc_style; |
10 |
|
11 |
static int flagserial,flagspace,flagback; |
12 |
char sound[20]; |
13 |
char logfile[MAX_STR_LEN];
|
14 |
/* Create a new hbox with an image and a label packed into it
|
15 |
* and return the box. This is used at the top level */
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
static GtkWidget *xpm_label_box(gchar *label_text, gchar *xpm_filename)
|
21 |
{ |
22 |
GtkWidget *box; |
23 |
GtkWidget *label; |
24 |
GtkWidget *image; |
25 |
char final_label[10]; |
26 |
|
27 |
font_desc = pango_font_description_from_string ("Helvetica,Sans 15");
|
28 |
font_dsc = pango_font_description_from_string ("Helvetica,Sans 15");
|
29 |
strcpy (final_label, " ");
|
30 |
strcat (final_label, label_text); |
31 |
strcat (final_label, " ");
|
32 |
|
33 |
/* Create box for image and label */
|
34 |
box = gtk_vbox_new (FALSE, 0);
|
35 |
|
36 |
gtk_container_set_border_width (GTK_CONTAINER (box), 0);
|
37 |
|
38 |
/* Now on to the image stuff */
|
39 |
image = gtk_image_new_from_file (xpm_filename); |
40 |
|
41 |
/* Create a label for the button */
|
42 |
label = gtk_label_new (final_label); |
43 |
// gtk_widget_modify_font (label, font_dsc);
|
44 |
// gtk_widget_modify_fg (label, GTK_STATE_NORMAL, &blue);
|
45 |
|
46 |
/* Pack the image and label into the box */
|
47 |
gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
|
48 |
// gtk_box_pack_start (GTK_BOX (box), image, TRUE, TRUE, 3);
|
49 |
gtk_widget_show (label); |
50 |
//gtk_widget_show (image);
|
51 |
|
52 |
return box;
|
53 |
} |
54 |
|
55 |
/* This function is used for removing temp files while running the application and exit the application. */
|
56 |
|
57 |
int cleanup_and_main_quit ()
|
58 |
{ |
59 |
system ("sh clean.sh");
|
60 |
gtk_main_quit (); |
61 |
} |
62 |
|
63 |
/* Callback method */
|
64 |
|
65 |
static void create_buttons() |
66 |
{ |
67 |
GtkWidget *box, *message; |
68 |
|
69 |
int i;
|
70 |
int response = read_conf_file (CONFIG_FILE);
|
71 |
change_mode = 0; // initial default mode |
72 |
|
73 |
/* This is to read the config file*/
|
74 |
if (response == -1) |
75 |
fprintf (fp, "Error: Can not open config file %s\n", CONFIG_FILE);
|
76 |
else if (response == -2) |
77 |
fprintf (fp, "Error: In config file => Wrong definition of label\n");
|
78 |
else if (response == -3) |
79 |
fprintf (fp, "Error: In config file => Invalid mode given\n");
|
80 |
|
81 |
if (response < 0) |
82 |
{ |
83 |
|
84 |
message = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Brain overflow!"); |
85 |
gtk_dialog_run(GTK_DIALOG(message)); |
86 |
gtk_widget_hide(message); |
87 |
exit (1);
|
88 |
} |
89 |
|
90 |
/* This is to populate all the 9 buttons with alphabets as labels*/
|
91 |
for(i = 0; i < 10; i++) |
92 |
{ |
93 |
button[i] = gtk_button_new(); |
94 |
box = xpm_label_box (label[i], icon[i]); |
95 |
// g_print ("hop.c the label is %s\n",label[i]);
|
96 |
gtk_container_add (GTK_CONTAINER (button[i]), box); |
97 |
gtk_table_attach_defaults (GTK_TABLE (table), button[i], i, i+1, 0, 2); |
98 |
gtk_widget_show (box); |
99 |
gtk_widget_show (button[i]); |
100 |
} |
101 |
|
102 |
g_signal_connect (GTK_OBJECT (window), "key_press_event",
|
103 |
GTK_SIGNAL_FUNC ( check), NULL);
|
104 |
} |
105 |
|
106 |
/*
|
107 |
This method does the switching when the button is pressed. According to
|
108 |
various scan modes, it switches from one to other and highlights buttons/labels.
|
109 |
*/
|
110 |
|
111 |
static void callback() |
112 |
{ |
113 |
int index,i;
|
114 |
|
115 |
if(scan_mode == 2) |
116 |
{ |
117 |
|
118 |
switch(iter2%4) |
119 |
{ |
120 |
case 0: |
121 |
sprintf(selected_char, "%s", gtk_label_get_text(GTK_LABEL(single_button_label[0]))); |
122 |
|
123 |
if(strncmp(selected_char,"#",1) == 0) |
124 |
{ |
125 |
char text_space[300]; |
126 |
strcpy(text_to_add, (char *)gtk_entry_get_text(GTK_ENTRY(entry_label[0]))); |
127 |
strcpy(text_space,text_to_add); |
128 |
for (i=0 ; i < strlen(text_space) ; i++) |
129 |
if(text_space[i]==' ') |
130 |
text_space[i] = '-';
|
131 |
fprintf(fp, "W %s \n", text_space);
|
132 |
is_word_selected = 1;
|
133 |
enter_into_sentence_box(); |
134 |
/*-- will change to this gdk_threads_enter();
|
135 |
for(index = 0; index < 5; index++)
|
136 |
gtk_entry_set_text(GTK_ENTRY(entry_label[index]), "");
|
137 |
gdk_threads_leave(); if they ask */
|
138 |
} |
139 |
|
140 |
if(strncmp(selected_char," ",1)==0) |
141 |
{ |
142 |
// g_print ("The space thing is here %s\n",selected_char);
|
143 |
spell_mode=0;
|
144 |
} |
145 |
break;
|
146 |
case 1: |
147 |
sprintf(selected_char, "%s", gtk_label_get_text(GTK_LABEL(single_button_label[1]))); |
148 |
|
149 |
if(strncmp(selected_char,"#",1) == 0) |
150 |
{ |
151 |
char text_space[300]; |
152 |
strcpy(text_to_add, (char *)gtk_entry_get_text(GTK_ENTRY(entry_label[0]))); |
153 |
strcpy(text_space,text_to_add); |
154 |
for (i=0 ; i < strlen(text_space) ; i++) |
155 |
if(text_space[i]==' ') |
156 |
text_space[i] = '-';
|
157 |
fprintf(fp, "W %s \n", text_space);
|
158 |
is_word_selected = 1;
|
159 |
enter_into_sentence_box(); |
160 |
} |
161 |
|
162 |
if(strncmp(selected_char,"UNDO",4) == 0) |
163 |
{ |
164 |
flagspace=1;
|
165 |
gtk_widget_modify_bg(single_button[1], GTK_STATE_NORMAL, &colorGray);
|
166 |
strcpy(text_to_add,"");
|
167 |
flagpridict=0;
|
168 |
strcpy(strpridict,"");
|
169 |
for(index = 0; index < 5; index++) |
170 |
gtk_entry_set_text(GTK_ENTRY(entry_label[index]), " ");
|
171 |
gtk_widget_modify_base(entry_label[0], GTK_STATE_NORMAL,&yellow);
|
172 |
//enter_into_sentence_box ();
|
173 |
scan_mode=4;
|
174 |
// gtk_entry_set_text(GTK_ENTRY(sentence_box)," ");
|
175 |
// is_back_selected=1;
|
176 |
// g_print ("yes\n");
|
177 |
// return;
|
178 |
} |
179 |
break;
|
180 |
case 2: |
181 |
sprintf(selected_char, "%s", gtk_label_get_text(GTK_LABEL(single_button_label[2]))); |
182 |
if(strncmp(selected_char,"#",1) == 0) |
183 |
{ |
184 |
char text_space[300]; |
185 |
strcpy(text_to_add, (char *)gtk_entry_get_text(GTK_ENTRY(entry_label[0]))); |
186 |
strcpy(text_space,text_to_add); |
187 |
for (i=0 ; i < strlen(text_space) ; i++) |
188 |
if(text_space[i]==' ') |
189 |
text_space[i] = '-';
|
190 |
fprintf(fp, "W %s \n", text_space);
|
191 |
is_word_selected = 1;
|
192 |
enter_into_sentence_box(); |
193 |
} |
194 |
/*
|
195 |
change_mode = 1;
|
196 |
if(spell_mode == 0)
|
197 |
{
|
198 |
// from word to spell mode
|
199 |
//--u fprintf(fp, "W->S\n");
|
200 |
spell_mode = 1;
|
201 |
}
|
202 |
else
|
203 |
{
|
204 |
// from spell mode to word mode
|
205 |
//--u fprintf(fp, "S->W\n");
|
206 |
spell_mode = 0;
|
207 |
}
|
208 |
|
209 |
}*/
|
210 |
break;
|
211 |
case 3: |
212 |
gdk_threads_enter(); |
213 |
sprintf(selected_char, "%s", gtk_label_get_text(GTK_LABEL(single_button_label[3]))); |
214 |
gdk_threads_leave(); |
215 |
flagback=1;
|
216 |
is_back_selected = 1;
|
217 |
break;
|
218 |
} |
219 |
// Selected char
|
220 |
// fprintf(fp, "C = %s\n",selected_char);
|
221 |
} |
222 |
else if (scan_mode == 3) |
223 |
{ |
224 |
char text_space[200]; |
225 |
switch(iter3%mod_value)
|
226 |
{ |
227 |
case 1: |
228 |
strcpy(text_to_add, (char *)gtk_entry_get_text(GTK_ENTRY(entry_label[0]))); |
229 |
|
230 |
strcpy(text_space,text_to_add); |
231 |
for (i=0 ; i < strlen(text_space); i++) |
232 |
if(text_space[i]==' ') |
233 |
text_space[i] = '-';
|
234 |
if(selected_char[0] == ' ') |
235 |
fprintf(fp, "D %s \n", text_space);
|
236 |
else
|
237 |
fprintf(fp, "W %s \n", text_space);
|
238 |
|
239 |
is_word_selected = 1;
|
240 |
enter_into_sentence_box(); |
241 |
break;
|
242 |
case 2: |
243 |
strcpy(text_to_add, (char *)gtk_entry_get_text(GTK_ENTRY(entry_label[1]))); |
244 |
// Selected word
|
245 |
strcpy(text_space,text_to_add); |
246 |
for (i=0 ; i < strlen(text_space); i++) |
247 |
if(text_space[i]==' ') |
248 |
text_space[i] = '-';
|
249 |
if(selected_char[0] == ' ') |
250 |
fprintf(fp, "D %s \n", text_space);
|
251 |
else
|
252 |
fprintf(fp, "W %s \n", text_space);
|
253 |
|
254 |
is_word_selected = 1;
|
255 |
enter_into_sentence_box(); |
256 |
break;
|
257 |
case 3: |
258 |
strcpy(text_to_add,(char *)gtk_entry_get_text(GTK_ENTRY(entry_label[2]))); |
259 |
// Selected word
|
260 |
strcpy(text_space,text_to_add); |
261 |
for (i=0 ; i < strlen(text_space); i++) |
262 |
if(text_space[i]==' ') |
263 |
text_space[i] = '-';
|
264 |
if(selected_char[0] == ' ') |
265 |
fprintf(fp, "D %s \n", text_space);
|
266 |
else
|
267 |
fprintf(fp, "W %s \n", text_space);
|
268 |
|
269 |
is_word_selected = 1;
|
270 |
enter_into_sentence_box(); |
271 |
break;
|
272 |
case 4: |
273 |
strcpy(text_to_add,(char *)gtk_entry_get_text(GTK_ENTRY(entry_label[3]))); |
274 |
// Selected word
|
275 |
strcpy(text_space,text_to_add); |
276 |
for (i=0 ; i < strlen(text_space); i++) |
277 |
if(text_space[i]==' ') |
278 |
text_space[i] = '-';
|
279 |
if(selected_char[0] == ' ') |
280 |
fprintf(fp, "D %s \n", text_space);
|
281 |
else
|
282 |
fprintf(fp, "W %s \n", text_space);
|
283 |
|
284 |
is_word_selected = 1;
|
285 |
enter_into_sentence_box(); |
286 |
break;
|
287 |
case 5: |
288 |
strcpy(text_to_add,(char *)gtk_entry_get_text(GTK_ENTRY(entry_label[4]))); |
289 |
// Selected word
|
290 |
strcpy(text_space,text_to_add); |
291 |
for (i=0 ; i < strlen(text_space); i++) |
292 |
if(text_space[i]==' ') |
293 |
text_space[i] = '-';
|
294 |
if(selected_char[0] == ' ') |
295 |
fprintf(fp, "D %s \n", text_space);
|
296 |
else
|
297 |
fprintf(fp, "W %s \n", text_space);
|
298 |
|
299 |
is_word_selected = 1;
|
300 |
enter_into_sentence_box(); |
301 |
break;
|
302 |
case 6: |
303 |
is_more_selected = 1;
|
304 |
break;
|
305 |
case 0: |
306 |
stg3_back_selected = 1;
|
307 |
break;
|
308 |
default:
|
309 |
break;
|
310 |
} |
311 |
} |
312 |
else if (scan_mode == 4) |
313 |
{ |
314 |
// g_print ("##################################################################yes this is the place\n");
|
315 |
// sleep(5);
|
316 |
if (is_selected)
|
317 |
{ |
318 |
is_word_selected = 0;
|
319 |
gdk_threads_enter(); |
320 |
gtk_widget_modify_bg(single_button[5], GTK_STATE_NORMAL, &colorGray);
|
321 |
gdk_threads_leave(); |
322 |
is_erase_selected = 1;
|
323 |
enter_into_sentence_box(); |
324 |
} |
325 |
else
|
326 |
{ |
327 |
int i = 0; |
328 |
char string[300]; |
329 |
gdk_threads_enter(); |
330 |
gtk_widget_modify_bg(single_button[4], GTK_STATE_NORMAL, &green);
|
331 |
gdk_threads_leave(); |
332 |
iter1=0;
|
333 |
// Done selected - sentence in word mode/word in spell mode formed.
|
334 |
strcpy(string,((char *)gtk_entry_get_text(GTK_ENTRY(sentence_box))));
|
335 |
string[strlen(string)-1]='\0'; // because space is added to senetence box |
336 |
|
337 |
/* Restricting the length of the string to SLEN, which will be added logfile*/
|
338 |
if (strlen(string) >SLEN)
|
339 |
string[SLEN-1]='\0'; |
340 |
|
341 |
for(i=0;i<strlen(string)-1;i++) |
342 |
if(string[i]==' ') |
343 |
string[i]='-';
|
344 |
fprintf(fp, "D %s\n" , string);//((char *)gtk_entry_get_text(GTK_ENTRY(sentence_box)))); |
345 |
system("play rings/click.wav");
|
346 |
read_out((char *)gtk_entry_get_text(GTK_ENTRY(sentence_box)));
|
347 |
system("play rings/click.wav");
|
348 |
|
349 |
for (i=0; i <= current_index; i++) |
350 |
strcpy (text_array[i], "");
|
351 |
current_index = 0;
|
352 |
spell_index = 0;
|
353 |
is_word_selected = 0;
|
354 |
is_done_selected = 1;
|
355 |
// gtk_widget_modify_bg(single_button[4], GTK_STATE_NORMAL, &colorGray);
|
356 |
// g_print ("yes this is the placelllll \\n");
|
357 |
prev_scan_mode = 1;
|
358 |
while (check_for_user_input() == 0) |
359 |
; |
360 |
gdk_threads_enter(); |
361 |
gtk_entry_set_text(GTK_ENTRY(sentence_box),"");
|
362 |
for(index = 0; index < 5; index++) |
363 |
gtk_entry_set_text(GTK_ENTRY(entry_label[index]), " ");
|
364 |
gdk_threads_leave(); |
365 |
} |
366 |
} |
367 |
|
368 |
if(is_word_selected)
|
369 |
scan_mode = 4;
|
370 |
else if(is_more_selected) |
371 |
scan_mode = 3;
|
372 |
else if (stg3_back_selected) |
373 |
scan_mode = 2;
|
374 |
else if (is_back_selected) |
375 |
{ |
376 |
scan_mode = 1;
|
377 |
} |
378 |
else if(spell_mode && scan_mode == 1 && !change_mode) |
379 |
scan_mode = 2;
|
380 |
else if(spell_mode && scan_mode == 2 && !change_mode) |
381 |
{ |
382 |
strcpy(text_to_add,selected_char); |
383 |
enter_into_sentence_box(); |
384 |
scan_mode = 4;
|
385 |
} |
386 |
else if (change_mode) |
387 |
{ |
388 |
|
389 |
if(spell_mode)
|
390 |
{ |
391 |
for(index = 0; index < 5; index++) |
392 |
gtk_entry_set_text(GTK_ENTRY(entry_label[index]), " ");
|
393 |
|
394 |
} |
395 |
else
|
396 |
{ |
397 |
for(index = 0; index < 5; index++) |
398 |
gtk_entry_set_text(GTK_ENTRY(entry_label[index]), " ");
|
399 |
// gtk_entry_set_text(GTK_ENTRY(entry_label[5]), "MORE");
|
400 |
// gtk_entry_set_text(GTK_ENTRY(entry_label[6]), "BACK");
|
401 |
current_index++; |
402 |
spell_index = 0;
|
403 |
} |
404 |
scan_mode = 1;
|
405 |
change_mode = 0;
|
406 |
|
407 |
} |
408 |
else if(!spell_mode) |
409 |
scan_mode = (scan_mode % 4) +1; |
410 |
else if(is_done_selected) |
411 |
scan_mode = 1;
|
412 |
} |
413 |
|
414 |
/*
|
415 |
Using spell mode once the word construction is done this method is called.
|
416 |
If the formed word is found in the dictionary, the wav file is played.
|
417 |
Otherwise, the text to speech synthesis is done and the word is read out.
|
418 |
*/
|
419 |
|
420 |
void spell_out(char * string_to_read) |
421 |
{ |
422 |
/* int i = 0;
|
423 |
char total_string [400];
|
424 |
char prefix[20] = "wav/";
|
425 |
int wordlen = strlen(string_to_read);
|
426 |
int len;
|
427 |
strcpy (total_string,"./playit.sh ");
|
428 |
len=strlen(total_string);
|
429 |
for(i=0;i<wordlen;i++)
|
430 |
{
|
431 |
if(string_to_read[i] == '#')
|
432 |
{
|
433 |
// strcpy(prefix,"wav/");
|
434 |
if(spell_mode)
|
435 |
strcpy(prefix,"word");
|
436 |
else
|
437 |
strcpy(prefix,"spell");
|
438 |
}
|
439 |
else
|
440 |
{
|
441 |
prefix[4]= tolower(string_to_read[i]);
|
442 |
prefix[5] ='\0';
|
443 |
}
|
444 |
// strcat(total_string, prefix);
|
445 |
// strcat(total_string,".wav ");
|
446 |
// strcpy (total_string,"./playit.sh ");
|
447 |
total_string[len++]=string_to_read[i];
|
448 |
total_string[len++]=',';
|
449 |
|
450 |
}
|
451 |
|
452 |
total_string[len++]='\0';
|
453 |
if(string_to_read[2]== '#')
|
454 |
{
|
455 |
strcpy(total_string,"./playit.sh y,z,");
|
456 |
strcat(total_string,prefix);
|
457 |
}
|
458 |
system(total_string);
|
459 |
g_print ("The total string is %s\n",total_string);
|
460 |
// strcat (total_string, " -o out.wav");
|
461 |
// system(total_string);
|
462 |
// system("play out.wav");*/
|
463 |
int i = 0; |
464 |
char total_string [100]; |
465 |
char prefix[20] = "a"; |
466 |
int wordlen = strlen(string_to_read);
|
467 |
|
468 |
if(string_to_read[0] == 1 || string_to_read[0] == 2 || string_to_read[0] == 3) |
469 |
{ |
470 |
system("./playit.sh template");
|
471 |
return;
|
472 |
} |
473 |
|
474 |
|
475 |
for(i=0;i<wordlen;i++) |
476 |
{ |
477 |
// strcpy (total_string,"mplayer -quiet -af volume=20 wav/");
|
478 |
strcpy (total_string,"./playit.sh ");
|
479 |
if(string_to_read[i] == '#') |
480 |
{ |
481 |
/* if(spell_mode)
|
482 |
strcpy(prefix,"word");
|
483 |
else
|
484 |
strcpy(prefix,"spell"); */
|
485 |
strcpy(prefix,"done");
|
486 |
} |
487 |
else
|
488 |
{ |
489 |
prefix[0]= tolower(string_to_read[i]);
|
490 |
prefix[1] ='\0'; |
491 |
} |
492 |
strcat(total_string, prefix); |
493 |
// strcat(total_string,".mp3 ");
|
494 |
// g_print ("%s\n",total_string);
|
495 |
system(total_string); |
496 |
|
497 |
// sleep(1);
|
498 |
} |
499 |
// strcat (total_string, " -o out.wav");
|
500 |
// system(total_string);
|
501 |
// system("play out.wav");
|
502 |
|
503 |
|
504 |
|
505 |
} |
506 |
|
507 |
/*
|
508 |
This is method is called in the word mode. This is to read the final sentence
|
509 |
formed after pressing the DONE button.
|
510 |
*/
|
511 |
|
512 |
void read_sentence(char * sentence) |
513 |
{ |
514 |
char *token;
|
515 |
char * temp = (char *) malloc ((strlen(sentence)+1)*sizeof(char)); |
516 |
strcpy(temp,sentence); |
517 |
token = strtok(temp, " ");
|
518 |
while (token != NULL) |
519 |
{ |
520 |
read_out(token); |
521 |
token = strtok(NULL, " "); |
522 |
} |
523 |
free (temp); |
524 |
} |
525 |
|
526 |
/*
|
527 |
This is method is called in the word mode. This is to read the list of words
|
528 |
available in level 3.
|
529 |
*/
|
530 |
|
531 |
void read_out(char * string_to_read) |
532 |
{ |
533 |
char tmp_string [200]; |
534 |
int i = 0, length = 0; |
535 |
char total_string [400]; |
536 |
strcpy (tmp_string,string_to_read); |
537 |
for (i=0 ; i < strlen(tmp_string); i++) |
538 |
if(tmp_string[i]==' ') |
539 |
tmp_string[i] = '-';
|
540 |
|
541 |
length = strlen(tmp_string); |
542 |
for(i = 0; i < length; i++) |
543 |
{ |
544 |
if((tmp_string[i] != '-') && (tmp_string[i] != '#')) |
545 |
tmp_string[i] += 32;
|
546 |
if(tmp_string[i] == '#') |
547 |
{ |
548 |
//-- if(!spell_mode)
|
549 |
//-- strcpy(tmp_string,"spell");
|
550 |
//-- else
|
551 |
strcpy (tmp_string,"done");
|
552 |
} |
553 |
} |
554 |
strcpy (total_string,"./playit.sh ");
|
555 |
strcat(total_string,tmp_string); |
556 |
system(total_string); |
557 |
g_print ("The total string is %s\n",total_string);
|
558 |
|
559 |
} |
560 |
|
561 |
/*
|
562 |
This method is to add/delete the words/letters in the selected box. (the
|
563 |
box which shows the selected words/letters)
|
564 |
*/
|
565 |
void enter_into_sentence_box ()
|
566 |
{ |
567 |
char concatenated_text[300] = ""; |
568 |
int i;
|
569 |
|
570 |
// g_print ("ghjdgfdgsfjbg ---%d\n",flagspace );
|
571 |
if (is_erase_selected)
|
572 |
if (spell_mode && (spell_index))
|
573 |
text_array[current_index][--spell_index] = 0;
|
574 |
else
|
575 |
{ |
576 |
strcpy(text_array[current_index-1], ""); |
577 |
strcpy(text_array[current_index], "");
|
578 |
if (current_index != 0) |
579 |
current_index--; |
580 |
// printf ("I think it will come here :%d...........................\n",flagpridict);
|
581 |
} |
582 |
else
|
583 |
if (spell_mode)
|
584 |
{ |
585 |
text_array[current_index][spell_index++] = text_to_add[0];
|
586 |
text_array[current_index][spell_index] = 0;
|
587 |
} |
588 |
/* else if(flagspace == 1 )
|
589 |
{
|
590 |
// strcpy(text_array[current_index][spell_index++]," ");
|
591 |
// text_array[current_index][spell_index++]=' ';
|
592 |
text_array[current_index][spell_index++] = ' ';
|
593 |
flagspace = 0;
|
594 |
}*/
|
595 |
else
|
596 |
strcpy(text_array[current_index++],text_to_add); |
597 |
|
598 |
for(i=0; i <= current_index; i++) |
599 |
{ |
600 |
strcat(concatenated_text,text_array[i]); |
601 |
strcat(concatenated_text," ");
|
602 |
} |
603 |
|
604 |
gtk_entry_set_text(GTK_ENTRY(sentence_box),(gchar *)concatenated_text); |
605 |
fclose(fp); |
606 |
|
607 |
/* Calling the function update_user_dictionary to maintain a user local dictionary. */
|
608 |
|
609 |
update_user_dictionary(dir_name) ; |
610 |
|
611 |
fp=fopen(logfile,"a");
|
612 |
} |
613 |
|
614 |
/*
|
615 |
This is the method that keeps on running in a thread which scans the
|
616 |
buttons/labels at each level according to the requirements.
|
617 |
*/
|
618 |
|
619 |
void *button_selection (void *args) |
620 |
{ |
621 |
yes_or_no_args *data = (yes_or_no_args *)args; |
622 |
gboolean say_something; |
623 |
guint word_count = 0;
|
624 |
int label_iter = 1, index = 0; |
625 |
|
626 |
while (1) |
627 |
{ |
628 |
if(scan_mode == 1) |
629 |
{ |
630 |
gdk_threads_enter(); |
631 |
if(flagback==1) |
632 |
{ |
633 |
data->index-=3;
|
634 |
iter1-=3;
|
635 |
//g_print ("data->index and iter1+++++++++++++++++++++++++++ : %d and :%d\n",data->index,iter1);
|
636 |
if(iter1 == -2) |
637 |
{iter1=8;
|
638 |
data->index=7;
|
639 |
} |
640 |
if(iter1 == -1) |
641 |
{ |
642 |
iter1=9;
|
643 |
data->index=8;
|
644 |
} |
645 |
if(iter1 == 0) |
646 |
data->index=9;
|
647 |
if(data->index == -3) |
648 |
data->index=8;
|
649 |
flagback=0;
|
650 |
} |
651 |
|
652 |
// gtk_widget_modify_bg(button[data->index],GTK_STATE_NORMAL,&colorRed);
|
653 |
gtk_widget_modify_bg(single_button[2], GTK_STATE_NORMAL, &colorGray);
|
654 |
gtk_widget_modify_bg(single_button[3], GTK_STATE_NORMAL, &colorGray);
|
655 |
gtk_widget_modify_bg(single_button[4], GTK_STATE_NORMAL, &colorGray);
|
656 |
gtk_widget_modify_bg(single_button[5], GTK_STATE_NORMAL, &colorGray);
|
657 |
gdk_threads_leave(); |
658 |
|
659 |
is_word_selected = 0;
|
660 |
is_more_selected = 0;
|
661 |
is_back_selected = 0;
|
662 |
|
663 |
|
664 |
say_something = 1;// (yes_or_no != data->what); |
665 |
|
666 |
if(say_something)
|
667 |
{ |
668 |
/* set the variable */
|
669 |
yes_or_no = data->what; |
670 |
} |
671 |
|
672 |
if (say_something)
|
673 |
{ |
674 |
/* set label text */
|
675 |
if(data->what == NO_IT_IS_NOT)
|
676 |
{ |
677 |
int index = iter1%10; |
678 |
|
679 |
gchar string[7];
|
680 |
string[1] = '\0'; |
681 |
gdk_threads_enter (); |
682 |
gtk_widget_modify_bg(button[data->index],GTK_STATE_NORMAL,&colorRed); |
683 |
//g_print ("data->index---------------------------------- : %d\n",data->index);
|
684 |
data->what = YES_IT_IS; |
685 |
if(index == 0) |
686 |
{ |
687 |
index = 10;
|
688 |
} |
689 |
string[0] = label[index-1][0]; |
690 |
if(string[0] == '1') |
691 |
strcpy(string," TEMP");
|
692 |
gtk_label_set_text(GTK_LABEL(single_button_label[0]), string);
|
693 |
string[0] = label[index-1][1]; |
694 |
if(string[0] == '2') |
695 |
strcpy(string,"UNDO");
|
696 |
gtk_label_set_text(GTK_LABEL(single_button_label[1]), string);
|
697 |
string[0] = label[index-1][2]; |
698 |
if(string[0] == '3') |
699 |
strcpy(string," ");
|
700 |
gtk_label_set_text(GTK_LABEL(single_button_label[2]), string);
|
701 |
|
702 |
gdk_threads_leave (); |
703 |
if(index==10) |
704 |
system ("./playit.sh tem,plate");
|
705 |
else
|
706 |
spell_out(label[index-1]);
|
707 |
if(check_for_user_input())
|
708 |
callback(); |
709 |
} |
710 |
else
|
711 |
{ |
712 |
if(scan_mode == 1) |
713 |
{ |
714 |
gdk_threads_enter (); |
715 |
gtk_widget_modify_bg(button[data->index],GTK_STATE_NORMAL,&colorGray); |
716 |
data->index = (iter1++)%10;
|
717 |
gdk_threads_leave (); |
718 |
} |
719 |
data->what = NO_IT_IS_NOT; |
720 |
} |
721 |
} |
722 |
iter2=0;
|
723 |
} |
724 |
else if (scan_mode == 2) |
725 |
{ int i;
|
726 |
stg3_back_selected = 0;
|
727 |
gdk_threads_enter (); |
728 |
// gtk_widget_modify_base(entry_label[6], GTK_STATE_NORMAL, &colorGray);
|
729 |
for(i=0;i<10;i++) |
730 |
gtk_widget_modify_bg(button[i],GTK_STATE_NORMAL,&colorGray); |
731 |
gtk_widget_modify_bg (backbutton, GTK_STATE_NORMAL, &colorGray); |
732 |
gdk_threads_leave (); |
733 |
switch(iter2%4) |
734 |
{ |
735 |
case 0: |
736 |
gdk_threads_enter (); |
737 |
gtk_widget_modify_bg(single_button[0],GTK_STATE_NORMAL,&colorRed);
|
738 |
gtk_widget_modify_bg(single_button[3],GTK_STATE_NORMAL,&colorGray);
|
739 |
gdk_threads_leave (); |
740 |
read_out((char *)gtk_label_get_text(GTK_LABEL(single_button_label[0]))); |
741 |
if(check_for_user_input())
|
742 |
callback(); |
743 |
iter2++; |
744 |
break;
|
745 |
case 1: |
746 |
gdk_threads_enter (); |
747 |
gtk_widget_modify_bg(single_button[1],GTK_STATE_NORMAL,&colorRed);
|
748 |
gtk_widget_modify_bg(single_button[0],GTK_STATE_NORMAL,&colorGray);
|
749 |
gdk_threads_leave (); |
750 |
read_out((char *)gtk_label_get_text(GTK_LABEL(single_button_label[1]))); |
751 |
if(check_for_user_input())
|
752 |
callback(); |
753 |
iter2++; |
754 |
break;
|
755 |
case 2: |
756 |
gdk_threads_enter (); |
757 |
gtk_widget_modify_bg(single_button[2],GTK_STATE_NORMAL,&colorRed);
|
758 |
gtk_widget_modify_bg(single_button[1],GTK_STATE_NORMAL,&colorGray);
|
759 |
gdk_threads_leave (); |
760 |
read_out((char *)gtk_label_get_text(GTK_LABEL(single_button_label[2]))); |
761 |
if(check_for_user_input())
|
762 |
callback(); |
763 |
iter2++; |
764 |
break;
|
765 |
case 3: |
766 |
gdk_threads_enter (); |
767 |
gtk_widget_modify_bg(single_button[3],GTK_STATE_NORMAL,&colorRed);
|
768 |
gtk_widget_modify_bg(single_button[2],GTK_STATE_NORMAL,&colorGray);
|
769 |
gdk_threads_leave (); |
770 |
read_out((char *)gtk_label_get_text(GTK_LABEL(single_button_label[3]))); |
771 |
if(check_for_user_input())
|
772 |
callback(); |
773 |
if(!is_back_selected)
|
774 |
{ |
775 |
prev_scan_mode = 2;
|
776 |
scan_mode = 4;
|
777 |
} |
778 |
iter2++; |
779 |
break;
|
780 |
} |
781 |
iter3=1;
|
782 |
label_iter = 1;
|
783 |
mod_value = 7;
|
784 |
} |
785 |
else if (scan_mode == 3) |
786 |
{ |
787 |
gchar returnString[MAX_STR_LEN]; |
788 |
|
789 |
gdk_threads_enter(); |
790 |
for(index = 0; index < 6; index++) |
791 |
gtk_widget_modify_bg(single_button[index],GTK_STATE_NORMAL,&colorGray); |
792 |
gdk_threads_leave(); |
793 |
|
794 |
if(iter3 == 1) |
795 |
{ |
796 |
word_count = init_query(selected_char); |
797 |
if (flagpridict ==1) |
798 |
strcpy (selected_char,strpridict); |
799 |
gdk_threads_enter(); |
800 |
gtk_entry_set_text(GTK_ENTRY(entry_label[0]),selected_char);
|
801 |
gdk_threads_leave(); |
802 |
if(word_count > 0) |
803 |
for(index =1; index < 5; index ++) |
804 |
{ |
805 |
run_query(returnString,label_iter++); |
806 |
gdk_threads_enter(); |
807 |
gtk_entry_set_text(GTK_ENTRY(entry_label[index]),returnString); |
808 |
gdk_threads_leave(); |
809 |
} |
810 |
else
|
811 |
{ |
812 |
gdk_threads_enter(); |
813 |
for(index = 1; index < 5; index++) |
814 |
gtk_entry_set_text(GTK_ENTRY(entry_label[index]), " ");
|
815 |
gdk_threads_leave(); |
816 |
} |
817 |
} |
818 |
if(label_iter > word_count)
|
819 |
{ |
820 |
is_more_selected = 0;
|
821 |
mod_value = word_count+2;
|
822 |
// printf ("------------------------------------%d",mod_value);
|
823 |
} |
824 |
else if(is_more_selected) |
825 |
{ |
826 |
int diff = word_count - label_iter;
|
827 |
if(diff > 5) |
828 |
for(index =1; index < 5; index ++) |
829 |
{ |
830 |
run_query(returnString,label_iter++); |
831 |
gdk_threads_enter(); |
832 |
gtk_entry_set_text(GTK_ENTRY(entry_label[index]),returnString); |
833 |
gdk_threads_leave(); |
834 |
} |
835 |
else
|
836 |
{ |
837 |
for(index = 1; index <diff; index++) |
838 |
{ |
839 |
run_query(returnString,label_iter++); |
840 |
gdk_threads_enter(); |
841 |
gtk_entry_set_text(GTK_ENTRY(entry_label[index]),returnString); |
842 |
gdk_threads_leave(); |
843 |
} |
844 |
for(; index < 5 ; index++) |
845 |
{ |
846 |
gdk_threads_enter(); |
847 |
gtk_entry_set_text(GTK_ENTRY(entry_label[index])," ");
|
848 |
gdk_threads_leave(); |
849 |
} |
850 |
mod_value = diff + 1;
|
851 |
// printf ("%d------------%d----------\n",mod_value,diff);
|
852 |
|
853 |
} |
854 |
is_more_selected = 0;
|
855 |
iter3 = 1;
|
856 |
gdk_threads_enter(); |
857 |
// gtk_widget_modify_bg(entry_label[5], GTK_STATE_NORMAL, &colorGray);
|
858 |
gtk_widget_modify_bg(morebutton, GTK_STATE_NORMAL, &colorGray); |
859 |
gdk_threads_leave(); |
860 |
} |
861 |
char spacestr[100]; |
862 |
int ind;
|
863 |
// printf ("%d------------%d----------%d\n",iter3,mod_value,no_of_results);
|
864 |
if (selected_char[0] == ' ') |
865 |
{ |
866 |
if((iter3%mod_value) == 1) |
867 |
iter3=2;
|
868 |
gdk_threads_enter(); |
869 |
for(index = 1; index < 5; index++) |
870 |
gtk_widget_modify_base(entry_label[index], GTK_STATE_NORMAL, &colorGray); |
871 |
gtk_widget_modify_bg(morebutton, GTK_STATE_NORMAL, &colorGray); |
872 |
gtk_widget_modify_bg(backbutton, GTK_STATE_NORMAL, &colorGray); |
873 |
gdk_threads_leave(); |
874 |
} |
875 |
switch(iter3%mod_value)
|
876 |
{ |
877 |
case 1: |
878 |
gdk_threads_enter(); |
879 |
gtk_widget_modify_base(entry_label[0], GTK_STATE_NORMAL,&colorRed);
|
880 |
|
881 |
for(index = 0; index < 5; index++) |
882 |
if(index != 0) |
883 |
gtk_widget_modify_base(entry_label[index], GTK_STATE_NORMAL, &colorGray); |
884 |
gtk_widget_modify_bg(morebutton, GTK_STATE_NORMAL, &colorGray); |
885 |
gtk_widget_modify_bg(backbutton, GTK_STATE_NORMAL, &colorGray); |
886 |
|
887 |
gdk_threads_leave(); |
888 |
strcpy(spacestr,(char *)gtk_entry_get_text(GTK_ENTRY(entry_label[0]))); |
889 |
for (ind=0 ; ind < strlen(spacestr); ind++) |
890 |
if(spacestr[ind]==' ') |
891 |
spacestr[ind] = '-';
|
892 |
// g_print ("the string is : %s \n",spacestr);
|
893 |
read_out(spacestr); |
894 |
//read_out((char *)gtk_entry_get_text(GTK_ENTRY(entry_label[0])));
|
895 |
if(check_for_user_input())
|
896 |
{ |
897 |
iter1=0;
|
898 |
flagpridict=1;
|
899 |
strcpy(strpridict,spacestr); |
900 |
scan_mode=0;
|
901 |
printf("before callback\n");
|
902 |
callback(); |
903 |
printf("after callback\n");
|
904 |
} |
905 |
iter3++; |
906 |
break;
|
907 |
case 2: |
908 |
gdk_threads_enter(); |
909 |
gtk_widget_modify_base(entry_label[1], GTK_STATE_NORMAL,&colorRed);
|
910 |
for(index = 0; index < 5; index++) |
911 |
if(index != 1) |
912 |
gtk_widget_modify_base(entry_label[index], GTK_STATE_NORMAL, &colorGray); |
913 |
gtk_widget_modify_bg(morebutton, GTK_STATE_NORMAL, &colorGray); |
914 |
gtk_widget_modify_bg(morebutton, GTK_STATE_NORMAL, &colorGray); |
915 |
gtk_widget_modify_base(entry_label[0], GTK_STATE_NORMAL,&yellow);
|
916 |
|
917 |
gdk_threads_leave(); |
918 |
strcpy(spacestr,(char *)gtk_entry_get_text(GTK_ENTRY(entry_label[1]))); |
919 |
for (ind=0 ; ind < strlen(spacestr); ind++) |
920 |
if(spacestr[ind]==' ') |
921 |
spacestr[ind] = '-';
|
922 |
// g_print ("the string is : %s \n",spacestr);
|
923 |
read_out(spacestr); |
924 |
// read_out((char *)gtk_entry_get_text(GTK_ENTRY(entry_label[1])));
|
925 |
if(check_for_user_input())
|
926 |
callback(); |
927 |
iter3++; |
928 |
break;
|
929 |
case 3: |
930 |
gdk_threads_enter(); |
931 |
gtk_widget_modify_base(entry_label[2], GTK_STATE_NORMAL,&colorRed);
|
932 |
for(index = 0; index < 5; index++) |
933 |
if(index != 2) |
934 |
gtk_widget_modify_base(entry_label[index], GTK_STATE_NORMAL, &colorGray); |
935 |
gtk_widget_modify_bg(morebutton, GTK_STATE_NORMAL, &colorGray); |
936 |
gtk_widget_modify_bg(backbutton, GTK_STATE_NORMAL, &colorGray); |
937 |
gtk_widget_modify_base(entry_label[0], GTK_STATE_NORMAL,&yellow);
|
938 |
|
939 |
gdk_threads_leave(); |
940 |
strcpy(spacestr,(char *)gtk_entry_get_text(GTK_ENTRY(entry_label[2]))); |
941 |
for (ind=0 ; ind < strlen(spacestr); ind++) |
942 |
if(spacestr[ind]==' ') |
943 |
spacestr[ind] = '-';
|
944 |
// g_print ("the string is : %s \n",spacestr);
|
945 |
read_out(spacestr); |
946 |
// read_out((char *)gtk_entry_get_text(GTK_ENTRY(entry_label[2])));
|
947 |
if(check_for_user_input())
|
948 |
callback(); |
949 |
iter3++; |
950 |
break;
|
951 |
case 4: |
952 |
gdk_threads_enter(); |
953 |
gtk_widget_modify_base(entry_label[3], GTK_STATE_NORMAL,&colorRed);
|
954 |
for(index = 0; index < 5; index++) |
955 |
if(index != 3) |
956 |
gtk_widget_modify_base(entry_label[index], GTK_STATE_NORMAL, &colorGray); |
957 |
gtk_widget_modify_bg(morebutton, GTK_STATE_NORMAL, &colorGray); |
958 |
gtk_widget_modify_bg(backbutton, GTK_STATE_NORMAL, &colorGray); |
959 |
gtk_widget_modify_base(entry_label[0], GTK_STATE_NORMAL,&yellow);
|
960 |
|
961 |
gdk_threads_leave(); |
962 |
strcpy(spacestr,(char *)gtk_entry_get_text(GTK_ENTRY(entry_label[3]))); |
963 |
for (ind=0 ; ind < strlen(spacestr); ind++) |
964 |
if(spacestr[ind]==' ') |
965 |
spacestr[ind] = '-';
|
966 |
// g_print ("the string is : %s \n",spacestr);
|
967 |
read_out(spacestr); |
968 |
// read_out((char *)gtk_entry_get_text(GTK_ENTRY(entry_label[3])));
|
969 |
if(check_for_user_input())
|
970 |
callback(); |
971 |
iter3++; |
972 |
break;
|
973 |
case 5: |
974 |
gdk_threads_enter(); |
975 |
gtk_widget_modify_base(entry_label[4], GTK_STATE_NORMAL,&colorRed);
|
976 |
for(index = 0; index < 5; index++) |
977 |
if(index != 4) |
978 |
gtk_widget_modify_base(entry_label[index], GTK_STATE_NORMAL, &colorGray); |
979 |
gtk_widget_modify_bg(morebutton, GTK_STATE_NORMAL, &colorGray); |
980 |
gtk_widget_modify_bg(backbutton, GTK_STATE_NORMAL, &colorGray); |
981 |
gtk_widget_modify_base(entry_label[0], GTK_STATE_NORMAL,&yellow);
|
982 |
|
983 |
gdk_threads_leave(); |
984 |
strcpy(spacestr,(char *)gtk_entry_get_text(GTK_ENTRY(entry_label[4]))); |
985 |
for (ind=0 ; ind < strlen(spacestr); ind++) |
986 |
if(spacestr[ind]==' ') |
987 |
spacestr[ind] = '-';
|
988 |
// g_print ("the string is : %s \n",spacestr);
|
989 |
read_out(spacestr); |
990 |
// read_out((char *)gtk_entry_get_text(GTK_ENTRY(entry_label[4])));
|
991 |
if(check_for_user_input())
|
992 |
callback(); |
993 |
iter3++; |
994 |
break;
|
995 |
case 6: |
996 |
gdk_threads_enter(); |
997 |
// gtk_widget_modify_base(entry_label[5], GTK_STATE_NORMAL,&colorRed);
|
998 |
gtk_widget_modify_bg(morebutton, GTK_STATE_NORMAL,&colorRed); |
999 |
for(index = 0; index < 5; index++) |
1000 |
gtk_widget_modify_base(entry_label[index], GTK_STATE_NORMAL, &colorGray); |
1001 |
gtk_widget_modify_bg(backbutton, GTK_STATE_NORMAL, &colorGray); |
1002 |
gtk_widget_modify_base(entry_label[0], GTK_STATE_NORMAL,&yellow);
|
1003 |
|
1004 |
gdk_threads_leave(); |
1005 |
// read_out((char *)gtk_entry_get_text(GTK_ENTRY(entry_label[5])));
|
1006 |
read_out ("MORE");
|
1007 |
if(check_for_user_input())
|
1008 |
callback(); |
1009 |
iter3++; |
1010 |
break;
|
1011 |
case 0: |
1012 |
gdk_threads_enter(); |
1013 |
// gtk_widget_modify_base(entry_label[6], GTK_STATE_NORMAL,&colorRed);
|
1014 |
gtk_widget_modify_bg(backbutton, GTK_STATE_NORMAL,&colorRed); |
1015 |
for(index = 0; index < 5; index++) |
1016 |
gtk_widget_modify_base(entry_label[index], GTK_STATE_NORMAL, &colorGray); |
1017 |
gtk_widget_modify_bg(morebutton, GTK_STATE_NORMAL, &colorGray); |
1018 |
gtk_widget_modify_base(entry_label[0], GTK_STATE_NORMAL,&yellow);
|
1019 |
|
1020 |
gdk_threads_leave(); |
1021 |
// read_out((char *)gtk_entry_get_text(GTK_ENTRY(entry_label[6])));
|
1022 |
read_out("BACK");//(char *)gtk_entry_get_text(GTK_ENTRY(entry_label[6]))); |
1023 |
if(check_for_user_input())
|
1024 |
{ |
1025 |
if (flagpridict == 1 ) |
1026 |
{ |
1027 |
int len=strlen(strpridict);
|
1028 |
strpridict[len-1]='\0'; |
1029 |
gdk_threads_enter(); |
1030 |
gtk_entry_set_text(GTK_ENTRY(entry_label[0]), strpridict);
|
1031 |
gtk_widget_modify_base(entry_label[0], GTK_STATE_NORMAL, &yellow);
|
1032 |
gdk_threads_leave(); |
1033 |
} |
1034 |
else
|
1035 |
{ |
1036 |
gdk_threads_enter(); |
1037 |
for(index = 0; index < 5; index++) |
1038 |
gtk_entry_set_text(GTK_ENTRY(entry_label[index]), " ");
|
1039 |
gdk_threads_leave(); |
1040 |
} |
1041 |
callback(); |
1042 |
} |
1043 |
iter3++; |
1044 |
break;
|
1045 |
} |
1046 |
|
1047 |
// gdk__threads_leave();
|
1048 |
|
1049 |
} |
1050 |
else if (scan_mode == 4) |
1051 |
{ |
1052 |
gdk_threads_enter (); |
1053 |
// sleep(2);
|
1054 |
//g_print("test maadi");
|
1055 |
for(index = 0; index < 5; index++) |
1056 |
gtk_widget_modify_base(entry_label[index], GTK_STATE_NORMAL, &colorGray); |
1057 |
gtk_widget_modify_bg(morebutton, GTK_STATE_NORMAL, &colorGray); |
1058 |
gtk_widget_modify_bg(backbutton, GTK_STATE_NORMAL, &colorGray); |
1059 |
gtk_widget_modify_base(entry_label[0], GTK_STATE_NORMAL,&yellow);
|
1060 |
|
1061 |
gdk_threads_leave (); |
1062 |
|
1063 |
gdk_threads_enter (); |
1064 |
for(index =0; index < 4; index++) |
1065 |
gtk_widget_modify_bg(single_button[index],GTK_STATE_NORMAL,&colorGray); |
1066 |
gdk_threads_leave (); |
1067 |
|
1068 |
//for DONE button
|
1069 |
|
1070 |
is_selected = 0;
|
1071 |
gdk_threads_enter (); |
1072 |
gtk_widget_modify_bg(single_button[4],GTK_STATE_NORMAL,&colorRed);
|
1073 |
gtk_widget_modify_bg(single_button[5],GTK_STATE_NORMAL,&colorGray);
|
1074 |
gdk_threads_leave (); |
1075 |
read_out((char *)gtk_label_get_text(GTK_LABEL(single_button_label[4]))); |
1076 |
sleep(1);
|
1077 |
|
1078 |
if(check_for_user_input())
|
1079 |
callback(); |
1080 |
|
1081 |
if(is_done_selected)
|
1082 |
{ |
1083 |
scan_mode = 1;
|
1084 |
is_done_selected = 0;
|
1085 |
g_print ("check here\n");
|
1086 |
} |
1087 |
else
|
1088 |
{ |
1089 |
//for ERASE button
|
1090 |
is_selected = 1;
|
1091 |
gdk_threads_enter (); |
1092 |
gtk_widget_modify_bg(single_button[5],GTK_STATE_NORMAL,&colorRed);
|
1093 |
gtk_widget_modify_bg(single_button[4],GTK_STATE_NORMAL,&colorGray);
|
1094 |
gdk_threads_leave (); |
1095 |
read_out((char *)gtk_label_get_text(GTK_LABEL(single_button_label[5]))); |
1096 |
if(check_for_user_input())
|
1097 |
{ |
1098 |
if (flagpridict == 1) |
1099 |
{ |
1100 |
// gtk_entry_set_text(GTK_ENTRY(entry_label[0]),strpridict);
|
1101 |
// scan_mode=3;
|
1102 |
strcpy(selected_char ,"");
|
1103 |
} |
1104 |
callback(); |
1105 |
} |
1106 |
} |
1107 |
if(!is_erase_selected)
|
1108 |
{ |
1109 |
g_print("test maadi --1\n");
|
1110 |
// flagpridict=0;
|
1111 |
//--- strcpy(strpridict,"");
|
1112 |
if((prev_scan_mode == 2) && (!is_done_selected)) |
1113 |
{ |
1114 |
g_print("test maadi --2\n");
|
1115 |
gdk_threads_enter(); |
1116 |
gtk_widget_modify_bg(single_button[5],GTK_STATE_NORMAL,&colorGray);
|
1117 |
gdk_threads_leave(); |
1118 |
prev_scan_mode = 1;
|
1119 |
scan_mode = 2;
|
1120 |
} |
1121 |
else
|
1122 |
{ |
1123 |
g_print("test maadi --3\n");
|
1124 |
gdk_threads_enter(); |
1125 |
for(index = 0; index < 5; index++) |
1126 |
gtk_entry_set_text(GTK_ENTRY(entry_label[index]), " ");
|
1127 |
gdk_threads_leave(); |
1128 |
scan_mode = 1;
|
1129 |
flagpridict=0;
|
1130 |
strcpy(strpridict,"");
|
1131 |
} |
1132 |
} |
1133 |
else
|
1134 |
{ |
1135 |
g_print("test maadi --4\n");
|
1136 |
if(!spell_mode)
|
1137 |
if(prev_scan_mode == 2) |
1138 |
{ |
1139 |
g_print("test maadi --5 PS : %d SM %d\n",scan_mode , prev_scan_mode);
|
1140 |
scan_mode = prev_scan_mode; |
1141 |
gdk_threads_enter(); |
1142 |
gtk_widget_modify_bg(single_button[5],GTK_STATE_NORMAL,&colorGray);
|
1143 |
gdk_threads_leave(); |
1144 |
} |
1145 |
else
|
1146 |
{ |
1147 |
scan_mode = 3;
|
1148 |
if (selected_char[0] == '#') |
1149 |
scan_mode = 1;
|
1150 |
g_print("test maadi --6 %s\n",selected_char);
|
1151 |
} |
1152 |
else
|
1153 |
{ |
1154 |
scan_mode = 2;
|
1155 |
g_print("test maadi --7\n");
|
1156 |
} |
1157 |
is_erase_selected = 0;
|
1158 |
} |
1159 |
} |
1160 |
} |
1161 |
return NULL; |
1162 |
} |
1163 |
|
1164 |
/*
|
1165 |
This is to create buttons for level 2 and DONE and ERASE.
|
1166 |
*/
|
1167 |
|
1168 |
static void create_single_button() |
1169 |
{ |
1170 |
GtkWidget *box; |
1171 |
int index;
|
1172 |
|
1173 |
for(index = 0; index < 6; index++) |
1174 |
{ |
1175 |
single_button[index] = gtk_button_new(); |
1176 |
box = gtk_vbox_new(FALSE,0);
|
1177 |
|
1178 |
if(index == 3) |
1179 |
{ |
1180 |
single_button_label[index] = gtk_label_new("BACK");
|
1181 |
// gtk_widget_modify_font (single_button_label[index], font_desc);
|
1182 |
// gtk_widget_modify_fg (single_button_label[index], GTK_STATE_NORMAL, &blue);
|
1183 |
} |
1184 |
else if(index == 4) |
1185 |
{ |
1186 |
single_button_label[index] = gtk_label_new("DONE");
|
1187 |
// gtk_widget_modify_font (single_button_label[index], font_desc);
|
1188 |
// gtk_widget_modify_fg (single_button_label[index], GTK_STATE_NORMAL, &blue);
|
1189 |
} |
1190 |
else if(index == 5) |
1191 |
{ |
1192 |
single_button_label[index] = gtk_label_new("ERASE");
|
1193 |
// gtk_widget_modify_font (single_button_label[index], font_desc);
|
1194 |
// gtk_widget_modify_fg (single_button_label[index], GTK_STATE_NORMAL, &blue);
|
1195 |
} |
1196 |
else
|
1197 |
single_button_label[index] = gtk_label_new(" ");
|
1198 |
|
1199 |
gtk_box_pack_start (GTK_BOX (box), single_button_label[index], FALSE, FALSE, 3);
|
1200 |
gtk_widget_show(single_button_label[index]); |
1201 |
gtk_widget_show(box); |
1202 |
gtk_container_add (GTK_CONTAINER (single_button[index]), box); |
1203 |
if(index == 4 || index == 5) |
1204 |
gtk_table_attach_defaults (GTK_TABLE (table),single_button[index], 9, 10, index, index+1); |
1205 |
else
|
1206 |
gtk_table_attach_defaults (GTK_TABLE (table), single_button[index], 0, 1, index+3, index+4); |
1207 |
|
1208 |
gtk_widget_show(single_button[index]); |
1209 |
} |
1210 |
} |
1211 |
|
1212 |
/*
|
1213 |
This is to create the labels in level 3.
|
1214 |
*/
|
1215 |
void create_labels()
|
1216 |
{ |
1217 |
int index;
|
1218 |
|
1219 |
for(index = 0; index < 5; index ++) |
1220 |
{ |
1221 |
entry_label[index] = gtk_entry_new_with_max_length(MAX_STR_LEN); |
1222 |
// gtk_widget_modify_text (entry_label[index], GTK_STATE_NORMAL, &blue);
|
1223 |
// gtk_widget_modify_font ((entry_label[index]), font_desc);
|
1224 |
gtk_entry_set_editable(GTK_ENTRY(entry_label[index]), FALSE); |
1225 |
gtk_widget_modify_base(entry_label[index], GTK_STATE_NORMAL, &colorGray); |
1226 |
gtk_table_attach_defaults (GTK_TABLE (table), entry_label[index], 2, 8, index+2,index+3); |
1227 |
|
1228 |
/* if(index == 5)
|
1229 |
{
|
1230 |
if(!spell_mode)
|
1231 |
gtk_entry_set_text(GTK_ENTRY(entry_label[index]), "MORE");
|
1232 |
else
|
1233 |
gtk_entry_set_text(GTK_ENTRY(entry_label[index]), " ");
|
1234 |
}
|
1235 |
else if(index == 6)
|
1236 |
{
|
1237 |
if(!spell_mode)
|
1238 |
gtk_entry_set_text(GTK_ENTRY(entry_label[index]), "BACK");
|
1239 |
else
|
1240 |
gtk_entry_set_text(GTK_ENTRY(entry_label[index]), " ");
|
1241 |
}
|
1242 |
else
|
1243 |
gtk_entry_set_text(GTK_ENTRY(entry_label[index]), " ");
|
1244 |
*/
|
1245 |
gtk_widget_show (entry_label[index]); |
1246 |
} |
1247 |
gtk_widget_modify_base(entry_label[0], GTK_STATE_NORMAL,&yellow);
|
1248 |
morebutton = gtk_button_new_with_label("MORE");
|
1249 |
// gtk_widget_modify_font (GTK_BIN (morebutton)->child, font_desc);
|
1250 |
// gtk_widget_modify_fg (GTK_BIN (morebutton)->child, GTK_STATE_NORMAL, &blue);
|
1251 |
gtk_table_attach_defaults (GTK_TABLE (table), morebutton, 2, 5, 7,8); |
1252 |
gtk_widget_modify_bg(morebutton, GTK_STATE_NORMAL, &colorGray); |
1253 |
gtk_widget_show (morebutton); |
1254 |
|
1255 |
backbutton = gtk_button_new_with_label("BACK");
|
1256 |
// gtk_widget_modify_font (GTK_BIN (backbutton)->child, font_desc);
|
1257 |
// gtk_widget_modify_fg (GTK_BIN (backbutton)->child, GTK_STATE_NORMAL, &blue);
|
1258 |
gtk_table_attach_defaults (GTK_TABLE (table), backbutton, 5, 8, 7,8); |
1259 |
gtk_widget_modify_bg(backbutton, GTK_STATE_NORMAL, &colorGray); |
1260 |
gtk_widget_show (backbutton); |
1261 |
|
1262 |
sentence_box = gtk_entry_new_with_max_length(200);
|
1263 |
// gtk_widget_modify_font ((sentence_box), font_desc);
|
1264 |
// gtk_widget_modify_text (sentence_box, GTK_STATE_NORMAL, &blue);
|
1265 |
gtk_entry_set_editable(GTK_ENTRY(sentence_box), FALSE); |
1266 |
gtk_entry_set_text(GTK_ENTRY(sentence_box)," ");
|
1267 |
// gtk_widget_modify_base(sentence_box, GTK_STATE_NORMAL, &colorGray);
|
1268 |
gtk_table_attach_defaults (GTK_TABLE (table), sentence_box, 0, 10, 8, 9); |
1269 |
gtk_widget_grab_focus (sentence_box); |
1270 |
gtk_widget_show (sentence_box); |
1271 |
} |
1272 |
|
1273 |
/*
|
1274 |
The pos signifies the position of the word in the list of words
|
1275 |
in res.txt. resultAt.txt gives the word at pos.
|
1276 |
*/
|
1277 |
|
1278 |
void run_query(char *string, int pos) |
1279 |
{ |
1280 |
FILE *fid = NULL;
|
1281 |
char cmd[300]; |
1282 |
char str[3]; |
1283 |
int ind;
|
1284 |
if( pos > no_of_results )
|
1285 |
{ |
1286 |
strcpy(string,"");
|
1287 |
return;
|
1288 |
} |
1289 |
strcpy (cmd, "cat res.txt | head -");
|
1290 |
sprintf (str, "%d" , pos);
|
1291 |
strcat (cmd, str); |
1292 |
strcat (cmd, " | tail -1 > resultAt.txt");
|
1293 |
system (cmd); |
1294 |
|
1295 |
fid = fopen("resultAt.txt","r"); |
1296 |
fscanf(fid,"%s",string);
|
1297 |
// printf("---> %s pos %d no_of_res %d\n",string,pos,no_of_results);
|
1298 |
fclose(fid); |
1299 |
for(ind=0;ind<strlen(string);ind++) |
1300 |
if(string[ind]=='-') |
1301 |
string[ind] = ' ';
|
1302 |
return;
|
1303 |
} |
1304 |
|
1305 |
/*
|
1306 |
This is to clean the query and reset the variables.
|
1307 |
*/
|
1308 |
|
1309 |
void clean_query(void) |
1310 |
{ |
1311 |
no_of_results = 0;
|
1312 |
memset(query_string,0,MAX_LEN);
|
1313 |
return;
|
1314 |
} |
1315 |
|
1316 |
/*This is to check the dictionary and find out the list of words. The number of
|
1317 |
words resulted from the query is given in resNo.txt and the words are given
|
1318 |
in res.txt.
|
1319 |
*/
|
1320 |
|
1321 |
int init_query(char *qString) |
1322 |
{ |
1323 |
char cmd[100]; |
1324 |
char spcmd[2200]; |
1325 |
char cmd_new[200]; |
1326 |
FILE *fid = NULL;
|
1327 |
|
1328 |
fclose(fp); |
1329 |
if (qString[0]== ' ') |
1330 |
{ |
1331 |
strcpy(qString," ");
|
1332 |
strcpy(strpridict,"");
|
1333 |
strcpy (spcmd, "grep -h '^D");
|
1334 |
} |
1335 |
else
|
1336 |
strcpy (spcmd, "grep -h '^W ");
|
1337 |
|
1338 |
if (flagpridict == 1) |
1339 |
{ |
1340 |
strcat(strpridict,qString); |
1341 |
// printf ("------------------> %s\n",strpridict);
|
1342 |
strcpy(qString,strpridict); |
1343 |
// printf ("------------------> %s\n",qString);
|
1344 |
} |
1345 |
|
1346 |
strcat(spcmd, qString); |
1347 |
strcat (spcmd, "' ");
|
1348 |
strcat (spcmd, dir_name); |
1349 |
strcat (spcmd, "/logs/* | sort | uniq -c | sort -n -r | awk '{print $3}' > res1.txt");
|
1350 |
/*for showing words used to all users */
|
1351 |
//--- : for showing words to all users: strcat (spcmd, "-r users/* | sort | uniq -c | sort -n -r | awk '{print $3}' > res1.txt");
|
1352 |
// printf ("---> %s\n",spcmd);
|
1353 |
system (spcmd); |
1354 |
system ("cp res1.txt res.txt");
|
1355 |
|
1356 |
|
1357 |
strcpy (query_string, qString); |
1358 |
strcpy (cmd, "grep ""^"); |
1359 |
strcat (cmd, qString); |
1360 |
strcat (cmd, """ "); |
1361 |
switch(query_string[0]) |
1362 |
{ |
1363 |
case 'A': |
1364 |
case 'B': |
1365 |
case 'C': |
1366 |
// strcat (cmd, "dict/abc.txt");
|
1367 |
strcat (cmd, "dict/A2Zwordslist.txt");
|
1368 |
break;
|
1369 |
case 'D': |
1370 |
case 'E': |
1371 |
case 'F': |
1372 |
// strcat (cmd, "dict/def.txt");
|
1373 |
strcat (cmd, "dict/A2Zwordslist.txt");
|
1374 |
break;
|
1375 |
case 'G': |
1376 |
case 'H': |
1377 |
case 'I': |
1378 |
// strcat (cmd, "dict/ghi.txt");
|
1379 |
strcat (cmd, "dict/A2Zwordslist.txt");
|
1380 |
break;
|
1381 |
case 'J': |
1382 |
case 'K': |
1383 |
case 'L': |
1384 |
// strcat (cmd, "dict/jkl.txt");
|
1385 |
strcat (cmd, "dict/A2Zwordslist.txt");
|
1386 |
break;
|
1387 |
case 'M': |
1388 |
case 'N': |
1389 |
case 'O': |
1390 |
// strcat (cmd, "dict/mno.txt");
|
1391 |
strcat (cmd, "dict/A2Zwordslist.txt");
|
1392 |
break;
|
1393 |
case 'P': |
1394 |
case 'Q': |
1395 |
case 'R': |
1396 |
// strcat (cmd, "dict/pqr.txt");
|
1397 |
strcat (cmd, "dict/A2Zwordslist.txt");
|
1398 |
break;
|
1399 |
case 'S': |
1400 |
case 'T': |
1401 |
case 'U': |
1402 |
// strcat (cmd, "dict/stu.txt");
|
1403 |
strcat (cmd, "dict/A2Zwordslist.txt");
|
1404 |
break;
|
1405 |
case 'V': |
1406 |
case 'W': |
1407 |
case 'X': |
1408 |
case 'Y': |
1409 |
case 'Z': |
1410 |
// strcat (cmd, "dict/vwxyz.txt");
|
1411 |
strcat (cmd, "dict/A2Zwordslist.txt");
|
1412 |
break;
|
1413 |
case '1': |
1414 |
case '2': |
1415 |
case '3': |
1416 |
strcat(cmd, "dict/temp.txt");
|
1417 |
break;
|
1418 |
default:
|
1419 |
strcat(cmd, "dict/temp.txt");
|
1420 |
break;
|
1421 |
} |
1422 |
|
1423 |
strcat (cmd, "> let.txt");
|
1424 |
system (cmd); |
1425 |
system ("cat res1.txt let.txt > res2.txt");
|
1426 |
system ("cat res2.txt res1.txt | sort | uniq -u >> res.txt");
|
1427 |
// printf("---> %s\n",cmd);
|
1428 |
// strcat (cmd_new, " | wc -l > resNo.txt");
|
1429 |
strcpy (cmd_new, "grep -c ^");
|
1430 |
strncat(cmd_new,qString,1);
|
1431 |
strcat (cmd_new," res.txt > resNo.txt");
|
1432 |
system (cmd_new); |
1433 |
// printf("---> %s\n",cmd_new);
|
1434 |
|
1435 |
fid = fopen("resNo.txt","r"); |
1436 |
fscanf(fid,"%d",&no_of_results);
|
1437 |
// printf("---> %d\n",no_of_results);
|
1438 |
fclose(fid); |
1439 |
fp = fopen (logfile, "a");
|
1440 |
|
1441 |
return no_of_results;
|
1442 |
} |
1443 |
|
1444 |
/*
|
1445 |
This is the method called by the main program. This initializes the
|
1446 |
GUI and spawns a thread which runs the scanning process forever.
|
1447 |
The thread is used as gtk_main should be called to make the GUI visible
|
1448 |
and no code after that can be executed. Before gtk_main is invoked, if
|
1449 |
the scanning process is done then it never reaches gtk_main and the
|
1450 |
GUI will not be displayed.
|
1451 |
*/
|
1452 |
|
1453 |
int Callmain( int *argc, char ***argv ) |
1454 |
{ |
1455 |
|
1456 |
yes_or_no_args yes_args; |
1457 |
pthread_t yes_tid; |
1458 |
GtkWidget * event_box; |
1459 |
|
1460 |
time_t time_now; |
1461 |
struct tm *time_ptr;
|
1462 |
char string[MAX_STR_LEN];
|
1463 |
char str_dict[MAX_STR_LEN];
|
1464 |
|
1465 |
|
1466 |
time(&time_now); /* get time in seconds */
|
1467 |
|
1468 |
/* custom build the format of the date/ time */
|
1469 |
time_ptr = localtime(&time_now); |
1470 |
strftime(string, MAX_STR_LEN, "%d-%b-%G", time_ptr);
|
1471 |
|
1472 |
strcpy(logfile,USER_DIR); |
1473 |
strcat(logfile,user_name); |
1474 |
strcat(logfile,LOG_FILE_PREFIX); |
1475 |
mkdir(logfile, (mode_t)0755);
|
1476 |
|
1477 |
/* Here we are calling the function maintain_userlogs in maintain.c to restrict the memory for a each user. */
|
1478 |
|
1479 |
maintain_userlogs (logfile); |
1480 |
|
1481 |
/* Here we are creating local dictionary for the usser. */
|
1482 |
|
1483 |
strcpy(str_dict , "touch ");
|
1484 |
strcat(str_dict , logfile); |
1485 |
strcat(str_dict , "dict.txt");
|
1486 |
system(str_dict); |
1487 |
|
1488 |
strcat(logfile,string); |
1489 |
// printf("LOG FILE NAME IS %s\n", LOGFIle);
|
1490 |
|
1491 |
fp = fopen (logfile, "a");
|
1492 |
|
1493 |
gdk_color_parse("red",&colorRed);
|
1494 |
gtk_init (argc, argv); |
1495 |
|
1496 |
if (!g_thread_supported ())
|
1497 |
{ |
1498 |
g_thread_init (NULL);
|
1499 |
gdk_threads_init(); |
1500 |
} |
1501 |
|
1502 |
gdk_threads_enter (); |
1503 |
|
1504 |
|
1505 |
/* Create a new window */
|
1506 |
window = gtk_window_new (GTK_WINDOW_TOPLEVEL); |
1507 |
gtk_widget_set_size_request (window, 800, 400); |
1508 |
gtk_window_set_policy (GTK_WINDOW (window), FALSE, TRUE, TRUE); |
1509 |
|
1510 |
gtk_window_set_title (GTK_WINDOW (window), "HOPE");
|
1511 |
|
1512 |
/* It's a good idea to do this for all windows. */
|
1513 |
g_signal_connect (G_OBJECT (window), "destroy",
|
1514 |
G_CALLBACK (cleanup_and_main_quit), NULL);
|
1515 |
|
1516 |
g_signal_connect (G_OBJECT (window), "delete_event",
|
1517 |
G_CALLBACK (cleanup_and_main_quit), NULL);
|
1518 |
|
1519 |
//adding event_box for handling events
|
1520 |
event_box = gtk_event_box_new (); |
1521 |
gtk_container_add (GTK_CONTAINER (window), event_box); |
1522 |
|
1523 |
/* Sets the border width of the window. */
|
1524 |
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
|
1525 |
|
1526 |
/* Create a 10x10 table */
|
1527 |
table = gtk_table_new (9, 10, TRUE); |
1528 |
|
1529 |
/*Set table row spacing and column spacing*/
|
1530 |
gtk_table_set_col_spacings (GTK_TABLE (table), 2);
|
1531 |
gtk_table_set_row_spacings (GTK_TABLE (table), 2);
|
1532 |
|
1533 |
/* Put the table in the main window */
|
1534 |
gtk_container_add (GTK_CONTAINER (event_box), table); |
1535 |
|
1536 |
/* Create buttons */
|
1537 |
create_buttons(); |
1538 |
|
1539 |
gtk_widget_modify_bg(button[0],GTK_STATE_NORMAL,&colorRed);
|
1540 |
|
1541 |
create_single_button(); |
1542 |
|
1543 |
create_labels(); |
1544 |
|
1545 |
gtk_widget_realize (event_box); |
1546 |
gdk_window_set_cursor (event_box->window, gdk_cursor_new (GDK_HAND1)); |
1547 |
|
1548 |
gtk_widget_show (table); |
1549 |
gtk_widget_show (event_box); |
1550 |
gtk_widget_show (window); |
1551 |
|
1552 |
/*
|
1553 |
Here the variables to be sent to the thread are created. The thread is
|
1554 |
created and button_selection method is executed in the thread.
|
1555 |
*/
|
1556 |
scan_mode = 1;
|
1557 |
yes_args.what = NO_IT_IS_NOT; |
1558 |
yes_args.index = 0;
|
1559 |
pthread_create (&yes_tid, NULL, button_selection, &yes_args);
|
1560 |
|
1561 |
/* Rest in gtk_main and wait for the fun to begin! */
|
1562 |
gtk_main (); |
1563 |
gdk_threads_leave (); |
1564 |
|
1565 |
return 0; |
1566 |
} |
1567 |
|
1568 |
|