8,35 → 8,33 |
#include "..\lib\gui.h" |
#include "..\lib\obj\box_lib.h" |
|
unsigned char speaker[23*40*3]= FROM "speaker.raw"; |
|
#ifdef LANG_RUS |
#define WINDOW_TITLE "«®¢ ਪ 2.0" |
#define WINDOW_TITLE "«®¢ ਪ 2.2" |
#define DICTIONARY_NOT_FOUND "«®¢ àì ¥ ©¤¥" |
#define DICTIONARY_LOADED "«®¢ àì § £à㦥" |
#define WORD_NOT_FOUND "«®¢® ¥ ©¤¥® ¢ á«®¢ à¥" |
#define ERROR "訡ª #" |
#define ERROR "訡ª #%d" |
#else |
#define WINDOW_TITLE "Dictionary v2.0" |
#define WINDOW_TITLE "Dictionary v2.2" |
#define DICTIONARY_NOT_FOUND "Dictionary not found" |
#define DICTIONARY_LOADED "Dictionary loaded" |
#define WORD_NOT_FOUND "Word isn't found in the dictionary" |
#define ERROR "Error #" |
#define ERROR "Error #%d" |
#endif |
|
proc_info Form; |
char edword[256], search_word[256], translate_result[4096]; |
#define PRONOUNCED_FILE "/sys/pronounced.txt" |
#define SPEECH_PATH "/kolibrios/media/speech/speech" |
#define TOPH 44 |
|
#define TEXT_ENG_RUS "ENG\26RUS" |
#define TEXT_RUS_ENG "RUS\26ENG" |
#define TEXT_VOCABULARIES "ENG RUS" |
#define ENG_RUS 0 |
#define RUS_ENG 1 |
#define BUTTON_CHANGE_LANGUAGE 10 |
int active_dict=2; |
|
int mouse_dd, speaker_id; |
int mouse_dd; |
edit_box edit1= {200,16,16,0xffffff,0x94AECE,0xffffff,0x94AECE,0,248,#edword,#mouse_dd,100000000000010b}; |
|
|
62,24 → 60,11 |
|
case evButton: |
id=GetButtonID(); |
if (id==01) { KillProcess(speaker_id); ExitProcess(); } |
if (id==10) { OpenDictionary(ENG_RUS); DrawLangButtons(); } |
if (id==11) { OpenDictionary(RUS_ENG); DrawLangButtons(); } |
if (id==15) |
{ |
if (GetProcessSlot(speaker_id)!=0)) |
{ |
KillProcess(speaker_id); |
pause(50); |
if (id==01) ExitProcess(); |
if (id==BUTTON_CHANGE_LANGUAGE) { |
if (active_dict == ENG_RUS) OpenDictionary(RUS_ENG); else OpenDictionary(ENG_RUS); |
DrawLangButtons(); |
} |
else |
{ |
if (WriteFile(strlen(#translate_result)+1, #translate_result, PRONOUNCED_FILE)!=0) break; |
pause(50); |
speaker_id = RunProgram(SPEECH_PATH, PRONOUNCED_FILE); |
} |
SpeakerDraw(); |
} |
break; |
|
case evKey: |
91,7 → 76,7 |
|
case evReDraw: |
system.color.get(); |
DefineAndDrawWindow(215,120,400,250,0x73,system.color.work,WINDOW_TITLE); |
DefineAndDrawWindow(215,120,500,350,0x73,system.color.work,WINDOW_TITLE); |
GetProcessInfo(#Form, SelfInfo); |
if (Form.status_window>2) break; |
if (Form.height<140) { MoveSize(OLD,OLD,OLD,140); break; } |
102,6 → 87,7 |
edit_box_draw stdcall(#edit1); |
DrawWideRectangle(edit1.left-2, edit1.top-2, edit1.width+3, 19, 2, 0xffffff); |
DrawRectangle(edit1.left-3, edit1.top-3, edit1.width+4, 20, system.color.work_graph); |
WriteText(Form.width-120, edit1.top, 0x90, system.color.work_text, TEXT_VOCABULARIES); |
DrawTranslation(); |
DrawLangButtons(); |
} |
111,34 → 97,16 |
|
void DrawLangButtons() |
{ |
DrawCaptButton(Form.width-130, edit1.top-3, 50,19, 10, system.color.work_button, system.color.work_button_text, TEXT_ENG_RUS); |
DrawCaptButton(Form.width-70, edit1.top-3, 50,19, 11, system.color.work_button, system.color.work_button_text, TEXT_RUS_ENG); |
PutShadow(-active_dict*60 + Form.width-70, edit1.top-3, 50,19, 1, 2); |
SpeakerDraw(); |
dword direction; |
DefineButton(Form.width-88, edit1.top-4, 20, 20, BUTTON_CHANGE_LANGUAGE, system.color.work_button); |
if (active_dict == ENG_RUS) direction = "\26"; else direction = "\27"; |
WriteText(Form.width-82, edit1.top-1, 10000001b, system.color.work_button_text, direction); |
} |
|
void SpeakerDraw() |
{ |
dword x, y; |
x = Form.cwidth-38; |
y = Form.cheight-32; |
if (active_dict) |
{ |
DeleteButton(15); |
DrawBar(x,y,23,20,0xFFFFFF); |
} |
else |
{ |
DefineButton(x-5, y-5, 23+10, 20+9, 15+BT_HIDE+BT_NOFRAME, 0); |
if (GetProcessSlot(speaker_id)==0)) _PutImage(x, y, 23,20, #speaker); else _PutImage(x, y, 23,20, 23*20*3+#speaker); |
} |
} |
|
void Translate() |
{ |
dword translation_start, translation_end; |
|
KillProcess(speaker_id); |
sprintf(#search_word, "\10%s\13", #edword); |
strupr(#search_word); |
|
165,7 → 133,6 |
{ |
dword res; |
if (dict_id==active_dict) return; |
KillProcess(speaker_id); |
active_dict = dict_id; |
if (io.buffer_data) free(io.buffer_data); |
if (active_dict==ENG_RUS) res=io.read("dictionaries/eng - rus.dict"); |
187,34 → 154,17 |
|
void DrawTranslation() |
{ |
int text_break=0; |
char tt[4096]=''; |
|
int y_pos=TOPH+1; |
char draw_buf[4096]; |
strcpy(#draw_buf, #translate_result); |
strlcpy(#draw_buf, #translate_result, sizeof(draw_buf)); |
|
DrawBar(0, y_pos, Form.width-9, Form.cheight - y_pos, 0xFFFFFF); |
strttl(#draw_buf); |
WriteTextB(10+1, y_pos+8, 10000001b, 0x800080, #search_word); |
while (draw_buf) |
{ |
text_break= Form.width/6-6; |
if (text_break>strlen(#draw_buf)) |
{ |
WriteText(10, y_pos+31, 0x80, 0, #draw_buf); |
break; |
|
DrawTextViewArea(10, y_pos+31, Form.cwidth-20, Form.cheight-30, 15, |
#draw_buf, -1, 0x000000); |
} |
while (draw_buf[text_break]<>' ') && (text_break>0) text_break--; |
strcpy(#tt, #draw_buf+text_break+1); |
draw_buf[text_break]=0x0; |
WriteText(10, y_pos+31, 0x80, 0, #draw_buf); |
strcpy(#draw_buf, #tt); |
y_pos+=12; |
if (y_pos+24+8>Form.cheight) break; |
} |
SpeakerDraw(); |
} |
|
|
stop: |