Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5818 → Rev 6638

/programs/cmm/dicty/dicty.c
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: