2015-09-07 18:01:43 +03:00
|
|
|
|
#ifndef AUTOBUILD
|
|
|
|
|
#include "lang.h--"
|
|
|
|
|
#endif
|
|
|
|
|
|
2016-11-30 19:41:21 +03:00
|
|
|
|
#define MEMSIZE 4096 * 1024 * 2
|
2016-11-30 19:43:20 +03:00
|
|
|
|
#include "../lib/strings.h"
|
|
|
|
|
#include "../lib/gui.h"
|
|
|
|
|
#include "../lib/obj/box_lib.h"
|
2012-11-26 19:26:15 +04:00
|
|
|
|
|
2015-09-07 18:01:43 +03:00
|
|
|
|
#ifdef LANG_RUS
|
2016-11-30 19:41:21 +03:00
|
|
|
|
#define WINDOW_TITLE "<22><><EFBFBD><EFBFBD><EFBFBD>ਪ 2.3"
|
2015-09-07 18:01:43 +03:00
|
|
|
|
#define DICTIONARY_LOADED "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㦥<EFBFBD>"
|
|
|
|
|
#define WORD_NOT_FOUND "<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <><E1ABAE><EFBFBD><EFBFBD>"
|
2016-10-31 01:47:57 +03:00
|
|
|
|
#define ERROR "<22>訡<EFBFBD><E8A8A1> #%d"
|
2015-09-07 18:01:43 +03:00
|
|
|
|
#else
|
2016-11-30 19:41:21 +03:00
|
|
|
|
#define WINDOW_TITLE "Dictionary v2.3"
|
2015-09-07 18:01:43 +03:00
|
|
|
|
#define DICTIONARY_LOADED "Dictionary loaded"
|
|
|
|
|
#define WORD_NOT_FOUND "Word isn't found in the dictionary"
|
2016-10-31 01:47:57 +03:00
|
|
|
|
#define ERROR "Error #%d"
|
2015-09-07 18:01:43 +03:00
|
|
|
|
#endif
|
2012-11-26 19:26:15 +04:00
|
|
|
|
|
2015-09-07 18:01:43 +03:00
|
|
|
|
proc_info Form;
|
2016-11-30 19:41:21 +03:00
|
|
|
|
char edit_text[256], search_word[256], translate_result[4096];
|
2016-11-05 13:13:29 +03:00
|
|
|
|
#define TOPH 45
|
2015-09-07 18:01:43 +03:00
|
|
|
|
|
2016-11-30 19:41:21 +03:00
|
|
|
|
unsigned char eng_rus[] = FROM "eng_rus.dict""\0";
|
|
|
|
|
unsigned char rus_eng[] = FROM "rus_eng.dict""\0";
|
|
|
|
|
dword io_buffer_data;
|
|
|
|
|
|
2015-09-07 18:01:43 +03:00
|
|
|
|
#define TEXT_ENG_RUS "ENG\26RUS"
|
|
|
|
|
#define TEXT_RUS_ENG "RUS\26ENG"
|
2016-11-30 19:41:21 +03:00
|
|
|
|
#define TEXT_VOC_R_E "ENG RUS"
|
|
|
|
|
#define TEXT_VOC_E_R "RUS ENG"
|
2015-09-07 18:01:43 +03:00
|
|
|
|
#define ENG_RUS 0
|
|
|
|
|
#define RUS_ENG 1
|
2016-10-31 01:47:57 +03:00
|
|
|
|
#define BUTTON_CHANGE_LANGUAGE 10
|
2015-09-07 18:01:43 +03:00
|
|
|
|
int active_dict=2;
|
2013-03-11 22:16:24 +04:00
|
|
|
|
|
2018-04-21 15:28:00 +03:00
|
|
|
|
edit_box edit1= {200,13,13,0xffffff,0x94AECE,0xffffff,0x94AECE,0x10000000,248,#edit_text,0,100000000000010b};
|
2016-11-30 19:41:21 +03:00
|
|
|
|
|
2012-11-26 19:26:15 +04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void main()
|
|
|
|
|
{
|
2015-09-07 18:01:43 +03:00
|
|
|
|
int id;
|
2015-07-29 23:43:05 +03:00
|
|
|
|
load_dll(boxlib, #box_lib_init,0);
|
2015-09-07 18:01:43 +03:00
|
|
|
|
OpenDictionary(ENG_RUS);
|
2012-11-26 19:26:15 +04:00
|
|
|
|
if (param)
|
|
|
|
|
{
|
2016-11-30 19:41:21 +03:00
|
|
|
|
strcpy(#edit_text, #param);
|
|
|
|
|
edit1.size=edit1.pos=strlen(#edit_text);
|
2012-11-26 19:26:15 +04:00
|
|
|
|
Translate();
|
|
|
|
|
}
|
2017-10-05 12:37:50 +03:00
|
|
|
|
SetEventMask(EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE+EVM_MOUSE_FILTER);
|
2012-11-26 19:26:15 +04:00
|
|
|
|
loop()
|
|
|
|
|
{
|
|
|
|
|
switch(WaitEvent())
|
|
|
|
|
{
|
|
|
|
|
case evMouse:
|
|
|
|
|
edit_box_mouse stdcall (#edit1);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case evButton:
|
|
|
|
|
id=GetButtonID();
|
2016-10-31 01:47:57 +03:00
|
|
|
|
if (id==01) ExitProcess();
|
|
|
|
|
if (id==BUTTON_CHANGE_LANGUAGE) {
|
|
|
|
|
if (active_dict == ENG_RUS) OpenDictionary(RUS_ENG); else OpenDictionary(ENG_RUS);
|
|
|
|
|
DrawLangButtons();
|
2012-11-26 19:26:15 +04:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case evKey:
|
2016-10-31 14:27:15 +03:00
|
|
|
|
GetKeys();
|
2015-09-07 18:01:43 +03:00
|
|
|
|
edit_box_key stdcall(#edit1);
|
|
|
|
|
Translate();
|
2012-11-26 19:26:15 +04:00
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case evReDraw:
|
2020-04-18 02:52:24 +03:00
|
|
|
|
sc.get();
|
|
|
|
|
DefineAndDrawWindow(215,120,500,350,0x73,sc.work,WINDOW_TITLE,0);
|
2015-09-07 18:01:43 +03:00
|
|
|
|
GetProcessInfo(#Form, SelfInfo);
|
|
|
|
|
if (Form.status_window>2) break;
|
|
|
|
|
if (Form.height<140) { MoveSize(OLD,OLD,OLD,140); break; }
|
|
|
|
|
if (Form.width<400) { MoveSize(OLD,OLD,400,OLD); break; }
|
2020-04-18 02:52:24 +03:00
|
|
|
|
DrawBar(0, 0, Form.cwidth, TOPH, sc.work); //top bg
|
|
|
|
|
DrawBar(0, TOPH, Form.cwidth, 1, sc.work_graph);
|
2020-04-14 00:08:28 +03:00
|
|
|
|
edit1.width=Form.cwidth-edit1.left-edit1.left - 116;
|
2015-09-07 18:01:43 +03:00
|
|
|
|
edit_box_draw stdcall(#edit1);
|
2016-11-05 13:13:29 +03:00
|
|
|
|
DrawWideRectangle(edit1.left-2, edit1.top-2, edit1.width+3, 25, 2, 0xffffff);
|
2020-04-18 02:52:24 +03:00
|
|
|
|
DrawRectangle(edit1.left-3, edit1.top-3, edit1.width+4, 26, sc.work_graph);
|
2015-09-07 18:01:43 +03:00
|
|
|
|
DrawTranslation();
|
|
|
|
|
DrawLangButtons();
|
2012-11-26 19:26:15 +04:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2015-09-07 18:01:43 +03:00
|
|
|
|
void DrawLangButtons()
|
2012-11-26 19:26:15 +04:00
|
|
|
|
{
|
2016-10-31 01:47:57 +03:00
|
|
|
|
dword direction;
|
2020-04-18 02:52:24 +03:00
|
|
|
|
DrawBar(Form.cwidth-111, edit1.top+3, 100, 25, sc.work);
|
|
|
|
|
DefineButton(Form.cwidth-79, edit1.top-4+3, 20, 20, BUTTON_CHANGE_LANGUAGE, sc.button);
|
|
|
|
|
WriteText(Form.cwidth-73, edit1.top-1+3, 10000001b, sc.button_text, "\26");
|
2016-11-30 19:41:21 +03:00
|
|
|
|
if (active_dict == ENG_RUS) direction = TEXT_VOC_R_E; else direction = TEXT_VOC_E_R;
|
2020-04-18 02:52:24 +03:00
|
|
|
|
WriteText(Form.cwidth-111, edit1.top+3, 0x90, sc.work_text, direction);
|
2012-11-26 19:26:15 +04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Translate()
|
|
|
|
|
{
|
2015-09-07 18:01:43 +03:00
|
|
|
|
dword translation_start, translation_end;
|
|
|
|
|
|
2016-11-30 19:41:21 +03:00
|
|
|
|
sprintf(#search_word, "\10%s\13", #edit_text);
|
2012-11-26 19:26:15 +04:00
|
|
|
|
strupr(#search_word);
|
2015-09-07 18:01:43 +03:00
|
|
|
|
|
2016-11-30 19:41:21 +03:00
|
|
|
|
if (!edit_text) goto _TR_END;
|
2015-09-07 18:01:43 +03:00
|
|
|
|
|
2016-11-30 19:41:21 +03:00
|
|
|
|
translation_start = strstr(io_buffer_data, #search_word);
|
2015-09-07 18:01:43 +03:00
|
|
|
|
if (!translation_start)
|
2012-11-26 19:26:15 +04:00
|
|
|
|
{
|
2015-09-07 18:01:43 +03:00
|
|
|
|
strcpy(#translate_result, WORD_NOT_FOUND);
|
2012-11-26 19:26:15 +04:00
|
|
|
|
}
|
2015-09-07 18:01:43 +03:00
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
translation_start = strchr(translation_start, '"') + 1;
|
|
|
|
|
translation_end = strchr(translation_start, '"');
|
|
|
|
|
strlcpy(#translate_result, translation_start, translation_end - translation_start);
|
2012-11-26 19:26:15 +04:00
|
|
|
|
}
|
2015-09-07 18:01:43 +03:00
|
|
|
|
_TR_END:
|
|
|
|
|
strcpy(#search_word, #search_word+1);
|
|
|
|
|
DrawTranslation();
|
2012-11-26 19:26:15 +04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2015-09-07 18:01:43 +03:00
|
|
|
|
void OpenDictionary(dword dict_id)
|
2013-03-11 22:16:24 +04:00
|
|
|
|
{
|
2015-09-07 18:01:43 +03:00
|
|
|
|
if (dict_id==active_dict) return;
|
|
|
|
|
active_dict = dict_id;
|
2016-11-30 19:41:21 +03:00
|
|
|
|
if (active_dict==ENG_RUS)
|
2013-03-11 22:16:24 +04:00
|
|
|
|
{
|
2016-11-30 19:41:21 +03:00
|
|
|
|
io_buffer_data=#eng_rus;
|
|
|
|
|
strcpy(#search_word, TEXT_ENG_RUS);
|
2015-02-18 23:49:48 +03:00
|
|
|
|
}
|
2016-11-30 19:41:21 +03:00
|
|
|
|
if (active_dict==RUS_ENG)
|
2015-02-18 23:49:48 +03:00
|
|
|
|
{
|
2016-11-30 19:41:21 +03:00
|
|
|
|
io_buffer_data=#rus_eng;
|
|
|
|
|
strcpy(#search_word, TEXT_RUS_ENG);
|
2013-03-11 22:16:24 +04:00
|
|
|
|
}
|
2016-11-30 19:41:21 +03:00
|
|
|
|
strcpy(#translate_result, DICTIONARY_LOADED);
|
2015-09-07 18:01:43 +03:00
|
|
|
|
DrawTranslation();
|
2013-03-11 22:16:24 +04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2012-11-26 19:26:15 +04:00
|
|
|
|
void DrawTranslation()
|
|
|
|
|
{
|
2015-09-07 18:01:43 +03:00
|
|
|
|
int y_pos=TOPH+1;
|
2012-11-26 19:26:15 +04:00
|
|
|
|
char draw_buf[4096];
|
2020-03-25 03:18:19 +03:00
|
|
|
|
strlcpy(#draw_buf, #translate_result, sizeof(draw_buf)-1);
|
2012-11-26 19:26:15 +04:00
|
|
|
|
|
2020-04-14 00:08:28 +03:00
|
|
|
|
DrawBar(0, y_pos, Form.cwidth, Form.cheight - y_pos, 0xFFFFFF);
|
2012-11-26 19:26:15 +04:00
|
|
|
|
strttl(#draw_buf);
|
2015-09-07 18:01:43 +03:00
|
|
|
|
WriteTextB(10+1, y_pos+8, 10000001b, 0x800080, #search_word);
|
2016-10-31 01:47:57 +03:00
|
|
|
|
|
2016-11-05 13:13:29 +03:00
|
|
|
|
DrawTextViewArea(10, y_pos+31, Form.cwidth-20, Form.cheight-30,
|
2016-10-31 01:47:57 +03:00
|
|
|
|
#draw_buf, -1, 0x000000);
|
2012-11-26 19:26:15 +04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
stop:
|