| View previous topic :: View next topic |
| Author |
Message |
KDJ
Joined: 06 Mar 2010 Posts: 1068 Location: Poland
|
Posted: Sat Mar 26, 2011 3:03 pm Post subject: |
|
|
Inserts date/time from calendar.
InsertDateFromCalendar.js
| Code: | // Inserts date/time from calendar - 2011-04-07
//
// Call("Scripts::Main", 1, "InsertDateFromCalendar.js")
//
// In calendar window, press F1 for help, or press O(S) for options-settings
var oSys = AkelPad.SystemFunction();
if (oSys.Call("kernel32::GetUserDefaultLangID") == 0x0415) //Polish
{
var pHlpTxt = " Klawisze skrótów dostępne w kalendarzu:\n" +
" Left/Right - poprzedni/następny dzień\n" +
" Up/Down - poprzedni/następny tydzień\n" +
" PgUp/PgDn - poprzedni/następny miesiąc\n" +
" Ctrl+PgUp/Ctrl+PgDn - poprzedni/następny rok\n" +
" Home/End - pierwszy/ostatni dzień miesiąca\n" +
" Ctrl+Home/Ctrl+End - pierwszy/ostatni widoczny dzień\n" +
" BackSpace - przejdź do dnia dzisiejszego\n" +
"\n" +
" Shift+Alt+Left/Right - przesuń kalendarz w lewo/prawo\n" +
" Shift+Alt+Up/Down - przesuń kalendarz w górę/dół\n" +
" Shift+Alt+Home/End - przesuń do lewej/prawej krawędzi okna\n" +
" Shift+Alt+PgUp/PgDn - przesuń do górnej/dolnej krawędzi okna\n" +
" Shift+Alt+C - wyśrodkuj kalendarz\n" +
"\n" +
" +/- - dodaj/usun miesiąc z kalendarza\n" +
" O (S) - opcje (ustawnienia)\n" +
"\n" +
" Enter\n" +
" Shift+Enter\n" +
" Ctrl+Enter\n" +
" Ctrl+Shift+Enter - wstaw datę/czas do tekstu (patrz opcje)";
var pHlpTxtDF = " d - dzień miesiąca, cyfry bez wiodącego zera\n" +
" dd - dzień miesiąca, cyfry z wiodącym zerem\n" +
" ddd - dzień tygodnia, trzy-literowy skrót\n" +
" dddd - dzień tygodnia, pełna nazwa\n" +
" M - miesiąc, cyfry bez wiodącego zera\n" +
" MM - miesiąc, cyfry z wiodącym zerem\n" +
" MMM - miesiąc, trzy-literowy skrót\n" +
" MMMM - miesiąc, pełna nazwa\n" +
" y - rok, dwie cyfry bez wiodącego zera\n" +
" yy - rok, dwie cyfry z wiodącym zerem\n" +
" yyyy - rok, cztery cyfry";
var pHlpTxtTF = " h - godziny bez wiodącego zera, zegar 12h\n" +
" hh - godziny z wiodącym zerem, zegar 12h\n" +
" H - godziny bez wiodącego zera, zegar 24h\n" +
" HH - godziny z wiodącym zerem, zegar 24h\n" +
" m - minuty bez wiodącego zera\n" +
" mm - minuty z wiodącym zerem\n" +
" s - sekundy bez wiodącego zera\n" +
" ss - sekundy z wiodącym zerem\n" +
" t - znacznik czasu jednoznakowy, (A/P)\n" +
" tt - znacznik czasu wieloznakowy, (AM/PM)";
var pTxtHelp = "Pomoc";
var pTxtSettings = "Opcje - ustawienia";
var pTxtFormat = "Wstaw - format daty/czasu";
var pTxtSystem = "System";
var pTxtLongDate = "Data długa";
var pTxtDateForm = "Format daty";
var pTxtTimeForm = "Format czasu";
var pTxtKeyAssig = "Wstaw - przydzielone klawisze";
var pTxtDate = "Data";
var pTxtTime = "Czas";
var pTxtCalendar = "Kalendarz";
var pTxtMonths = "Liczba widocznych miesięcy";
var pTxtColor1 = "Tło kalendarza";
var pTxtColor2 = "Tekst dni miesiąca";
var pTxtColor3 = "Tło nagłówka miesiąca";
var pTxtColor4 = "Tekst nagłówka miesiąca";
var pTxtColor5 = "Początkowe i końcowe dni";
var pTxtReset = "R\n" +
"e\n" +
"s\n" +
"e\n" +
"t";
}
else
{
var pHlpTxt = " Shortcut keys in calendar:\n" +
" Left/Right - previous/next day\n" +
" Up/Down - previous/next week\n" +
" PgUp/PgDn - previous/next month\n" +
" Ctrl+PgUp/Ctrl+PgDn - previous/next year\n" +
" Home/End - first/last day of month\n" +
" Ctrl+Home/Ctrl+End - first/last day visible in calendar\n" +
" BackSpace - go to today\n" +
"\n" +
" Shift+Alt+Left/Right - move calendar left/right\n" +
" Shift+Alt+Up/Down - move calendar up/down\n" +
" Shift+Alt+Home/End - move to left/right window edge\n" +
" Shift+Alt+PgUp/PgDn - move to top/bottom window edge\n" +
" Shift+Alt+C - center calendar\n" +
"\n" +
" +/- - add/remove month from calendar\n" +
" O (S) - options (settings)\n" +
"\n" +
" Enter\n" +
" Shift+Enter\n" +
" Ctrl+Enter\n" +
" Ctrl+Shift+Enter - insert date/time in text (see options)";
var pHlpTxtDF = " d - day of month, digits without leading zero\n" +
" dd - day of month, digits with leading zero\n" +
" ddd - day of week, three-letter abbreviation\n" +
" dddd - day of week, full name\n" +
" M - month, digits without leading zero\n" +
" MM - month, digits with leading zero\n" +
" MMM - month, three-letter abbreviation\n" +
" MMMM - month, full name\n" +
" y - year, two digits without leading zero\n" +
" yy - year, two digits with leading zero\n" +
" yyyy - year, four digits";
var pHlpTxtTF = " h - hours without leading zero, 12-hour clock\n" +
" hh - hours with leading zero, 12-hour clock\n" +
" H - hours without leading zero, 24-hour clock\n" +
" HH - hours with leading zero, 24-hour clock\n" +
" m - minutes without leading zero\n" +
" mm - minutes with leading zero\n" +
" s - seconds without leading zero\n" +
" ss - seconds with leading zero\n" +
" t - one char time-marker, such as A or P\n" +
" tt - multichar time-marker, such as AM or PM";
var pTxtHelp = "Help";
var pTxtSettings = "Options - settings";
var pTxtFormat = "Insert - date/time format";
var pTxtSystem = "System";
var pTxtLongDate = "Long date";
var pTxtDateForm = "Date format";
var pTxtTimeForm = "Time format";
var pTxtKeyAssig = "Insert - key assignment";
var pTxtDate = "Date";
var pTxtTime = "Time";
var pTxtCalendar = "Calendar";
var pTxtMonths = "Count of visible months";
var pTxtColor1 = "Background within a month";
var pTxtColor2 = "Text within a month";
var pTxtColor3 = "Background calendar title";
var pTxtColor4 = "Text calendar title";
var pTxtColor5 = "Header day and trailing day";
var pTxtReset = "R\n" +
"e\n" +
"s\n" +
"e\n" +
"t";
}
var DT_DWORD = 3;
var DT_WORD = 4;
var hMainWnd = AkelPad.GetMainWnd();
var hEditWnd = AkelPad.GetEditWnd();
var hGuiFont = oSys.Call("gdi32::GetStockObject", 17 /*DEFAULT_GUI_FONT*/);
var hInstanceDLL = AkelPad.GetInstanceDll();
var pClassName = "AkelPad::Scripts::" + WScript.ScriptName + "::" + hInstanceDLL;
var bSystem = 1;
var bLongDate = 0;
var pDateForm = "yyyy-MM-dd";
var pTimeForm = "HH:mm:ss";
var aKeyAssign = [["Enter", 1], ["Shift+Enter", 0], ["Ctrl+Enter", 2], ["Ctrt+Shift+Enter", 3]];
var nMonthCount = 1;
var aColor;
ReadWriteIni(0);
var hWndDlgCal;
var hWndCal;
var lpBuffer;
var lpSysTime;
var hBrushColor;
var bResetColors;
var aWndCalPos;
var aWndSetPos;
var lpWnd = [];
var IDFORMAT = 1000;
var IDDATE = 1001;
var IDTIME = 1002;
var IDSYSTEM = 1003;
var IDLONGDATE = 1004;
var IDDF = 1005;
var IDDFHLP = 1006;
var IDDFDESCR = 1007;
var IDTF = 1008;
var IDTFHLP = 1009;
var IDTFDESCR = 1010;
var IDKEYASSIG = 1011;
var IDASSIG0 = 1012;
var IDASSIG1 = 1013;
var IDASSIG2 = 1014;
var IDASSIG3 = 1015;
var IDENTER = 1016;
var IDSHENTER = 1017;
var IDCTENTER = 1018;
var IDCTSHENTER = 1019;
var IDCALENDAR = 1020;
var IDMONTHCOUNT = 1021;
var IDMONTHDESCR = 1022;
var IDCOLOR1 = 1023;
var IDCOLOR2 = 1024;
var IDCOLOR3 = 1025;
var IDCOLOR4 = 1026;
var IDCOLOR5 = 1027;
var IDCOLOR1BUTT = 1028;
var IDCOLOR2BUTT = 1029;
var IDCOLOR3BUTT = 1030;
var IDCOLOR4BUTT = 1031;
var IDCOLOR5BUTT = 1032;
var IDRESET = 1033;
var IDDFHLPTXT = 1034;
var IDTFHLPTXT = 1035;
var WNDTYPE = 0;
var WND = 1;
var WNDEXSTY = 2;
var WNDSTY = 3;
var WNDX = 4;
var WNDY = 5;
var WNDW = 6;
var WNDH = 7;
var WNDTXT = 8;
if (hEditWnd)
{
if (AkelPad.WindowRegisterClass(pClassName))
{
if (lpBuffer = AkelPad.MemAlloc(256 * _TSIZE))
{
if (lpSysTime = AkelPad.MemAlloc(16))
{
do
{
//Create dialog
hWndDlgCal = oSys.Call("user32::CreateWindowEx" + _TCHAR,
0, //dwExStyle
pClassName, //lpClassName
0, //lpWindowName
0x90000000, //WS_VISIBLE|WS_POPUP
0, //x
0, //y
0, //nWidth
0, //nHeight
hMainWnd, //hWndParent
0, //ID
hInstanceDLL, //hInstance
DialogCallback); //Script function callback. To use it class must be registered by WindowRegisterClass.
if (hWndDlgCal)
{
//Disable main window, to make dialog modal
oSys.Call("user32::EnableWindow", hMainWnd, false);
//Message loop
AkelPad.WindowGetMessage();
}
}
while (bResetColors);
AkelPad.MemFree(lpSysTime);
}
AkelPad.MemFree(lpBuffer);
}
AkelPad.WindowUnregisterClass(pClassName);
}
}
////////
function DialogCallback(hWnd, uMsg, wParam, lParam)
{
if (uMsg == 1) //WM_CREATE
{
hWndCal = oSys.Call("user32::CreateWindowEx" + _TCHAR,
0, //dwExStyle
"SysMonthCal32", //lpClassName
0, //lpWindowName
0x50800004, //WS_VISIBLE|WS_CHILD|WS_BORDER|MCS_WEEKNUMBERS
0, //x
0, //y
0, //nWidth
0, //nHeight
hWnd, //hWndParent
0, //ID
hInstanceDLL, //hInstance
0); //lpParam
AkelPad.SendMessage(hWndCal, 0x1014 /*MCM_SETMONTHDELTA*/, 1, 0);
//Set window size and position
SetWindowSize(hWnd);
MoveWindow(hMainWnd, hWnd, (bResetColors ? aWndCalPos : 0));
if (aColor)
{
for (var i = 1; i < 6; ++i)
AkelPad.SendMessage(hWndCal, 0x100A /*MCM_SETCOLOR*/, i, aColor[i]);
}
}
else if (uMsg == 7) //WM_SETFOCUS
oSys.Call("user32::SetFocus", hWndCal);
else if (uMsg == 0x0F) //WM_PAINT
{
if (bResetColors)
{
AkelPad.SendMessage(hWndCal, 0x1002 /*MCM_SETCURSEL*/, 0, lpSysTime);
AkelPad.SendMessage(hWnd, 256 /*WM_KEYDOWN*/, 0x4F /*O*/, 0);
}
}
else if (uMsg == 256) //WM_KEYDOWN
{
if (wParam == 0x25) //VK_LEFT
SetDate(-1);
if (wParam == 0x27) //VK_RIGHT
SetDate(1);
if (wParam == 0x26) //VK_UP
SetDate(-7);
if (wParam == 0x28) //VK_DOWN
SetDate(7);
if (wParam == 0x08) //VK_BACK - today
SetDate(0);
else if (wParam == 13) //VK_RETURN
{
if ((oSys.Call("user32::GetAsyncKeyState", 0xA0 /*VK_LSHIFT*/)) &&
(oSys.Call("user32::GetAsyncKeyState", 0x11 /*VK_CONTROL*/)))
InsertDateTime(aKeyAssign[3][1]);
else if (oSys.Call("user32::GetAsyncKeyState", 0xA0 /*VK_LSHIFT*/))
InsertDateTime(aKeyAssign[1][1]);
else if (oSys.Call("user32::GetAsyncKeyState", 0x11 /*VK_CONTROL*/))
InsertDateTime(aKeyAssign[2][1]);
else
InsertDateTime(aKeyAssign[0][1]);
oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 16 /*WM_CLOSE*/, 0, 0);
}
else if (wParam == 27) //VK_ESCAPE
oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 16 /*WM_CLOSE*/, 0, 0);
else if ((wParam == 109) || (wParam == 189)) //Num- or -
{
if (nMonthCount > 1)
{
--nMonthCount;
SetWindowSize(hWnd);
MoveWindow(hMainWnd, hWnd, "CV");
}
}
else if ((wParam == 107) || (wParam == 187)) //Num+ or +
{
if (nMonthCount < 5)
{
++nMonthCount;
SetWindowSize(hWnd);
MoveWindow(hMainWnd, hWnd, "CV");
}
}
else if (wParam == 112) //VK_F1
Help();
else if ((wParam == 0x4F) || (wParam == 0x53)) //O or S
{
Settings();
if (bResetColors)
oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 16 /*WM_CLOSE*/, 0, 0);
}
}
else if (uMsg == 260) //WM_SYSKEYDOWN
{
if (oSys.Call("user32::GetAsyncKeyState", 0xA0 /*VK_LSHIFT*/))
{
if (wParam == 0x27) //VK_RIGHT
MoveWindow(0, hWnd, "R");
else if (wParam == 0x25) //VK_LEFT
MoveWindow(0, hWnd, "L");
else if (wParam == 0x28) //VK_DOWN
MoveWindow(0, hWnd, "D");
else if (wParam == 0x26) //VK_UP
MoveWindow(0, hWnd, "U");
else if (wParam == 0x23) //VK_END
MoveWindow(0, hWnd, "E");
else if (wParam == 0x24) //VK_HOME
MoveWindow(0, hWnd, "H");
else if (wParam == 0x22) //VK_NEXT
MoveWindow(0, hWnd, "B");
else if (wParam == 0x21) //VK_PRIOR
MoveWindow(0, hWnd, "T");
else if (wParam == 0x43) //C
MoveWindow(hEditWnd, hWnd, "C");
}
}
else if (uMsg == 16) //WM_CLOSE
{
ReadWriteIni(1);
//Enable main window
oSys.Call("user32::EnableWindow", hMainWnd, true);
//Destroy dialog
oSys.Call("user32::DestroyWindow", hWnd);
}
else if (uMsg == 2) //WM_DESTROY
{
//Exit message loop
oSys.Call("user32::PostQuitMessage", 0);
}
return 0;
}
function SetWndFontAndText(hWnd, hFont, pText)
{
var lpWndTxt;
AkelPad.SendMessage(hWnd, 48 /*WM_SETFONT*/, hFont, true);
if (lpWndTxt = AkelPad.MemAlloc((pText.length + 1) * _TSIZE))
{
AkelPad.MemCopy(lpWndTxt, pText, _TSTR);
oSys.Call("user32::SetWindowText" + _TCHAR, hWnd, lpWndTxt);
AkelPad.MemFree(lpWndTxt);
}
}
function SetWindowSize(hWnd)
{
var lpRect = AkelPad.MemAlloc(16); //sizeof(RECT)
var nW, nH, nW1;
AkelPad.SendMessage(hWndCal, 0x1009 /*MCM_GETMINREQRECT*/, 0, lpRect);
nW = AkelPad.MemRead(lpRect + 8, DT_DWORD);
nH = AkelPad.MemRead(lpRect + 12, DT_DWORD);
nW1 = AkelPad.SendMessage(hWndCal, 0x1015 /*MCM_GETMAXTODAYWIDTH*/, 0, 0);
if (nW1 > nW)
nW = nW1;
oSys.Call("user32::SetWindowPos", hWnd, 0, 0, 0, nW, nH * nMonthCount - 13 * (nMonthCount - 1),
0x16 /*SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOMOVE*/);
oSys.Call("user32::SetWindowPos", hWndCal, 0, 0, 0, nW, nH * nMonthCount - 13 * (nMonthCount - 1),
0x16 /*SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOMOVE*/);
AkelPad.MemFree(lpRect);
}
function MoveWindow(hWndParent, hWnd, Action)
{
var rcWndParent;
var rcWnd;
var lpPoint;
var nX;
var nY;
var nWndWidth;
var nWndHeight;
var nCharHeight;
if (! hWndParent)
hWndParent = oSys.Call("user32::GetDesktopWindow");
rcWndParent = GetWindowPos(hWndParent);
rcWnd = GetWindowPos(hWnd);
nX = rcWnd.left;
nY = rcWnd.top;
if (! Action) //to caret
{
if (lpPoint = AkelPad.MemAlloc(8)) //sizeof(POINT)
{
AkelPad.SendMessage(hEditWnd, 3190 /*AEM_GETCARETPOS*/, lpPoint, 0);
oSys.Call("user32::ClientToScreen", hEditWnd, lpPoint);
nX = AkelPad.MemRead(lpPoint, DT_DWORD);
nY = AkelPad.MemRead(lpPoint + 4, DT_DWORD);
nWndWidth = rcWnd.right - rcWnd.left;
nWndHeight = rcWnd.bottom - rcWnd.top;
nCharHeight = AkelPad.SendMessage(hEditWnd, 3188 /*AEM_GETCHARSIZE*/, 0 /*AECS_HEIGHT*/, 0);
if ((nX + nWndWidth) > rcWndParent.right)
nX = rcWndParent.right - nWndWidth - 10;
if ((nY + nCharHeight + nWndHeight) < rcWndParent.bottom)
nY = nY + nCharHeight;
else if ((nY - nWndHeight) > rcWndParent.top)
nY = nY - nWndHeight;
else
nY = rcWndParent.top + ((rcWndParent.bottom - rcWndParent.top) / 2 - (rcWnd.bottom - rcWnd.top) / 2);
AkelPad.MemFree(lpPoint);
}
}
else if (Action == "R") //Move right
nX = rcWnd.left + ((rcWnd.right < rcWndParent.right) ? 10: 0);
else if (Action == "L") //Move left
nX = rcWnd.left - ((rcWnd.left > rcWndParent.left) ? 10: 0);
else if (Action == "D") //Move down
nY = rcWnd.top + ((rcWnd.bottom < rcWndParent.bottom) ? 10: 0);
else if (Action == "U") //Move up
nY = rcWnd.top - ((rcWnd.top > rcWndParent.top) ? 10: 0);
else if (Action == "E") //Move end (right)
nX = rcWnd.left + (rcWndParent.right - rcWnd.right);
else if (Action == "H") //Move home (left)
nX = rcWnd.left + (rcWndParent.left - rcWnd.left);
else if (Action == "B") //Move bottom
nY = rcWnd.top + (rcWndParent.bottom - rcWnd.bottom);
else if (Action == "T") //Move top
nY = rcWnd.top + (rcWndParent.top - rcWnd.top);
else if (Action == "C") //Center window
{
nX = rcWndParent.left + ((rcWndParent.right - rcWndParent.left) / 2 - (rcWnd.right - rcWnd.left) / 2);
nY = rcWndParent.top + ((rcWndParent.bottom - rcWndParent.top) / 2 - (rcWnd.bottom - rcWnd.top) / 2);
}
else if (Action == "CV") //Center vertically
{
nY = rcWndParent.top + ((rcWndParent.bottom - rcWndParent.top) / 2 - (rcWnd.bottom - rcWnd.top) / 2);
}
else if (Action == "LT") //Move left top
{
nX = rcWndParent.left;
nY = rcWndParent.top;
}
else if (Action == "RT") //Move right top
{
nX = rcWnd.left + (rcWndParent.right - rcWnd.right);
nY = rcWndParent.top;
}
else if (Action == "LB") //Move left bottom
{
nX = rcWndParent.left;
nY = rcWnd.top + (rcWndParent.bottom - rcWnd.bottom);
}
else if (Action == "RB") //Move right bottom
{
nX = rcWnd.left + (rcWndParent.right - rcWnd.right);
nY = rcWnd.top + (rcWndParent.bottom - rcWnd.bottom);
}
else
{
nX = Action.left;
nY = Action.top;
}
oSys.Call("user32::SetWindowPos", hWnd, 0, nX, nY, 0, 0, 0x15 /*SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE*/);
}
function GetWindowPos(hWnd)
{
var lpRect = AkelPad.MemAlloc(16) //sizeof(RECT);
var rcRect = [];
oSys.Call("user32::GetWindowRect", hWnd, lpRect);
rcRect.left = AkelPad.MemRead(lpRect, DT_DWORD);
rcRect.top = AkelPad.MemRead(lpRect + 4, DT_DWORD);
rcRect.right = AkelPad.MemRead(lpRect + 8, DT_DWORD);
rcRect.bottom = AkelPad.MemRead(lpRect +12, DT_DWORD);
AkelPad.MemFree(lpRect);
return rcRect;
}
function LoWord(nParam)
{
return (nParam & 0xffff);
}
function HiWord(nParam)
{
return ((nParam >> 16) & 0xffff);
}
function ReadWriteIni(bWrite)
{
var oFSO = new ActiveXObject("Scripting.FileSystemObject");
var pIniName = WScript.ScriptFullName.substring(0, WScript.ScriptFullName.lastIndexOf(".")) + ".ini";
var nError;
var oFile;
var pTxtIni;
var i;
if (bWrite)
{
pTxtIni = 'bSystem=' + bSystem + ';\r\n' +
'bLongDate=' + bLongDate + ';\r\n' +
'pDateForm="' + pDateForm.replace(/[\\"]/g, "\\$&") + '";\r\n' +
'pTimeForm="' + pTimeForm.replace(/[\\"]/g, "\\$&") + '";\r\n' +
'aKeyAssign[0][1]=' + aKeyAssign[0][1] + ';\r\n' +
'aKeyAssign[1][1]=' + aKeyAssign[1][1] + ';\r\n' +
'aKeyAssign[2][1]=' + aKeyAssign[2][1] + ';\r\n' +
'aKeyAssign[3][1]=' + aKeyAssign[3][1] + ';\r\n' +
'nMonthCount=' + nMonthCount + ';\r\n' +
'aColor='
if (aColor)
pTxtIni += '[' + aColor + ']';
else
pTxtIni += aColor;
pTxtIni += ';';
oFile = oFSO.OpenTextFile(pIniName, 2, true, 0);
oFile.Write(pTxtIni);
oFile.Close();
}
else if (oFSO.FileExists(pIniName))
{
try
{
eval(AkelPad.ReadFile(pIniName));
}
catch (nError)
{
}
}
}
function SetDate(nShift)
{
var nYear, nMonth, nDay, dDate;
if (nShift)
{
AkelPad.SendMessage(hWndCal, 0x1001 /*MCM_GETCURSEL*/, 0, lpSysTime);
nYear = AkelPad.MemRead(lpSysTime, DT_WORD);
nMonth = AkelPad.MemRead(lpSysTime + 2, DT_WORD) - 1;
nDay = AkelPad.MemRead(lpSysTime + 6, DT_WORD);
dDate = new Date(nYear, nMonth, nDay);
dDate.setDate(nDay + nShift);
nYear = dDate.getFullYear();
nMonth = dDate.getMonth() + 1;
nDay = dDate.getDate();
AkelPad.MemCopy(lpSysTime, nYear, DT_WORD);
AkelPad.MemCopy(lpSysTime + 2, nMonth, DT_WORD);
AkelPad.MemCopy(lpSysTime + 6, nDay, DT_WORD);
}
else
AkelPad.SendMessage(hWndCal, 0x100D /*MCM_GETTODAY*/, 0, lpSysTime);
AkelPad.SendMessage(hWndCal, 0x1002 /*MCM_SETCURSEL*/, 0, lpSysTime);
}
function GetDate()
{
var lpString = AkelPad.MemAlloc(256 * _TSIZE);
var lpFormat = AkelPad.MemAlloc(256 * _TSIZE);
var nFlag;
var pDate;
AkelPad.SendMessage(hWndCal, 0x1001 /*MCM_GETCURSEL*/, 0, lpSysTime);
if (bSystem)
{
if (bLongDate)
nFlag = 0x2; //DATE_LONGDATE
else
nFlag = 0x1; //DATE_SHORTDATE
}
else
{
nFlag = 0;
AkelPad.MemCopy(lpFormat, pDateForm, _TSTR);
}
oSys.Call("kernel32::GetDateFormat" + _TCHAR,
0x400, //LOCALE_USER_DEFAULT
nFlag,
lpSysTime,
(bSystem ? 0 : lpFormat),
lpString,
256);
pDate = AkelPad.MemRead(lpString, _TSTR);
AkelPad.MemFree(lpString);
AkelPad.MemFree(lpFormat);
return pDate;
}
function GetTime()
{
var lpString = AkelPad.MemAlloc(256 * _TSIZE);
var lpFormat = AkelPad.MemAlloc(256 * _TSIZE);
var dDate = new Date();
var pTime;
AkelPad.MemCopy(lpSysTime + 8, dDate.getHours(), DT_WORD);
AkelPad.MemCopy(lpSysTime + 10, dDate.getMinutes(), DT_WORD);
AkelPad.MemCopy(lpSysTime + 12, dDate.getSeconds(), DT_WORD);
AkelPad.MemCopy(lpSysTime + 14, dDate.getMilliseconds(), DT_WORD);
if (! bSystem)
AkelPad.MemCopy(lpFormat, pTimeForm, _TSTR);
oSys.Call("kernel32::GetTimeFormat" + _TCHAR,
0x007F, //LOCALE_INVARIANT
0,
lpSysTime,
(bSystem ? 0 : lpFormat),
lpString,
256);
pTime = AkelPad.MemRead(lpString, _TSTR);
AkelPad.MemFree(lpString);
AkelPad.MemFree(lpFormat);
return pTime;
}
function InsertDateTime(What)
{
var bColSel = AkelPad.SendMessage(hEditWnd, 3127 /*AEM_GETCOLUMNSEL*/, 0, 0);
var pDateTime;
var nLines;
var aTxt;
var i;
if (What == 0)
pDateTime = GetDate();
else if (What == 1)
pDateTime = GetDate() + " " + GetTime();
else if (What == 2)
pDateTime = GetTime();
else
pDateTime = GetTime() + " " + GetDate();
if (bColSel)
{
nLines = AkelPad.SendMessage(hEditWnd, 3129 /*AEM_GETLINENUMBER*/, 2 /*AEGL_LASTSELLINE*/, 0) -
AkelPad.SendMessage(hEditWnd, 3129 /*AEM_GETLINENUMBER*/, 1 /*AEGL_FIRSTSELLINE*/, 0) + 1;
aTxt = new Array(nLines);
for (i = 0; i < nLines; ++i)
aTxt[i] = pDateTime;
pDateTime = aTxt.join("\r");
}
AkelPad.ReplaceSel(pDateTime, AkelPad.GetSelStart() != AkelPad.GetSelEnd());
AkelPad.SendMessage(hEditWnd, 3128 /*AEM_UPDATESEL*/, bColSel, 0);
}
function Help()
{
var rcWndDesk = GetWindowPos(oSys.Call("user32::GetDesktopWindow"));
var rcWnd = GetWindowPos(hWndDlgCal);
var nWidth = 350;
var nHeight = 350;
var nX = rcWnd.right;
var nY = rcWnd.top;
var hWndDlgHlp;
if ((nX + nWidth) > rcWndDesk.right)
nX = rcWnd.left - nWidth;
if ((nY + nHeight) > rcWndDesk.bottom)
nY = rcWnd.bottom - nHeight;
hWndDlgHlp = oSys.Call("user32::CreateWindowEx" + _TCHAR,
0, //dwExStyle
pClassName, //lpClassName
pTxtHelp, //lpWindowName
0x90C80000, //WS_VISIBLE|WS_POPUP|WS_CAPTION|WS_SYSMENU
nX, //x
nY, //y
nWidth, //nWidth
nHeight, //nHeight
hWndDlgCal, //hWndParent
0, //ID
hInstanceDLL, //hInstance
DialogCallbackHlp); //Script function callback
if (hWndDlgHlp)
{
oSys.Call("user32::EnableWindow", hWndDlgCal, 0);
AkelPad.WindowGetMessage();
}
}
function DialogCallbackHlp(hWnd, uMsg, wParam, lParam)
{
if (uMsg == 1) //WM_CREATE
{
hWndHlp = oSys.Call("user32::CreateWindowEx" + _TCHAR,
0x000, //dwExStyle
"STATIC", //lpClassName
0, //lpWindowName
0x50400000, //WS_VISIBLE|WS_CHILD|WS_DLGFRAME
10, //x
10, //y
325, //nWidth
300, //nHeight
hWnd, //hWndParent
0, //ID
hInstanceDLL, //hInstance
0); //lpParam
SetWndFontAndText(hWndHlp, hGuiFont, pHlpTxt);
}
else if (uMsg == 256) //WM_KEYDOWN
{
if ((wParam == 27 /*VK_ESCAPE*/) || (wParam == 112 /*VK_F1*/))
oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 16 /*WM_CLOSE*/, 0, 0);
}
else if (uMsg == 16) //WM_CLOSE
{
oSys.Call("user32::EnableWindow", hWndDlgCal, 1);
oSys.Call("user32::DestroyWindow", hWnd);
}
else if (uMsg == 2) //WM_DESTROY
oSys.Call("user32::PostQuitMessage", 0);
return 0;
}
function Settings()
{
var nWidth = 265
var nHeight = 465;
var rcWndDesk;
var rcWnd;
var nX;
var nY;
var hWndDlgSet;
var i;
if (bResetColors)
{
nX = aWndSetPos.left;
nY = aWndSetPos.top;
}
else
{
rcWndDesk = GetWindowPos(oSys.Call("user32::GetDesktopWindow"));
rcWnd = GetWindowPos(hWndDlgCal);
nX = rcWnd.right;
nY = rcWnd.top;
if ((nX + nWidth) > rcWndDesk.right)
nX = rcWnd.left - nWidth;
if ((nY + nHeight) > rcWndDesk.bottom)
nY = rcWnd.bottom - nHeight;
}
if (! aColor)
{
//i=0 - MCSC_BACKGROUND (not used)
//i=4 - MCSC_MONTHBK
//i=1 - MCSC_TEXT
//i=2 - MCSC_TITLEBK
//i=3 - MCSC_TITLETEXT
//i=5 - MCSC_TRAILINGTEXT
aColor = [];
for (i = 1; i < 6; ++i)
aColor[i] = AkelPad.SendMessage(hWndCal, 0x100B /*MCM_GETCOLOR*/, i, 0);
}
//0x40400000 - WS_CHILD|WS_DLGFRAME (no visible)
//0x50000000 - WS_VISIBLE|WS_CHILD
//0x50000007 - WS_VISIBLE|WS_CHILD|BS_GROUPBOX
//0x50010000 - WS_VISIBLE|WS_CHILD|WS_TABSTOP
//0x50012000 - WS_VISIBLE|WS_CHILD|WS_TABSTOP|BS_MULTILINE
//0x50010003 - WS_VISIBLE|WS_CHILD|WS_TABSTOP|BS_AUTOCHECKBOX
//0x50010003 - WS_VISIBLE|WS_CHILD|WS_TABSTOP|CBS_DROPDOWNLIST
//0x50010080 - WS_VISIBLE|WS_CHILD|WS_TABSTOP|ES_AUTOHSCROLL
//0x50800000 - WS_VISIBLE|WS_CHILD|WS_BORDER
//Windows WNDTYPE, WND,WNDEXSTY, WNDSTY,WNDX,WNDY,WNDW,WNDH, WNDTXT
lpWnd[IDFORMAT ] = ["BUTTON", 0, 0, 0x50000007, 10, 10, 240, 130, pTxtFormat];
lpWnd[IDDATE ] = ["STATIC", 0, 0, 0x50000000, 20, 30, 220, 13, ""];
lpWnd[IDTIME ] = ["STATIC", 0, 0, 0x50000000, 20, 50, 220, 13, ""];
lpWnd[IDSYSTEM ] = ["BUTTON", 0, 0, 0x50010003, 20, 70, 80, 16, pTxtSystem];
lpWnd[IDLONGDATE ] = ["BUTTON", 0, 0, 0x50010003, 120, 70, 80, 16, pTxtLongDate];
lpWnd[IDDF ] = ["EDIT", 0, 0x200, 0x50010080, 20, 90, 135, 20, pDateForm];
lpWnd[IDDFHLP ] = ["BUTTON", 0, 0, 0x50010000, 155, 90, 15, 20, "?"];
lpWnd[IDDFDESCR ] = ["STATIC", 0, 0, 0x50000000, 175, 90, 70, 13, pTxtDateForm];
lpWnd[IDTF ] = ["EDIT", 0, 0x200, 0x50010080, 20, 110, 135, 20, pTimeForm];
lpWnd[IDTFHLP ] = ["BUTTON", 0, 0, 0x50010000, 155, 110, 15, 20, "?"];
lpWnd[IDTFDESCR ] = ["STATIC", 0, 0, 0x50000000, 175, 110, 70, 13, pTxtTimeForm];
lpWnd[IDKEYASSIG ] = ["BUTTON", 0, 0, 0x50000007, 10, 150, 240, 110, pTxtKeyAssig];
lpWnd[IDASSIG0 ] = ["COMBOBOX", 0, 0, 0x50010003, 20, 170, 100, 20, ""];
lpWnd[IDASSIG1 ] = ["COMBOBOX", 0, 0, 0x50010003, 20, 190, 100, 20, ""];
lpWnd[IDASSIG2 ] = ["COMBOBOX", 0, 0, 0x50010003, 20, 210, 100, 20, ""];
lpWnd[IDASSIG3 ] = ["COMBOBOX", 0, 0, 0x50010003, 20, 230, 100, 20, ""];
lpWnd[IDENTER ] = ["STATIC", 0, 0, 0x50000000, 125, 170, 80, 13, aKeyAssign[0][0]];
lpWnd[IDSHENTER ] = ["STATIC", 0, 0, 0x50000000, 125, 190, 80, 13, aKeyAssign[1][0]];
lpWnd[IDCTENTER ] = ["STATIC", 0, 0, 0x50000000, 125, 210, 80, 13, aKeyAssign[2][0]];
lpWnd[IDCTSHENTER ] = ["STATIC", 0, 0, 0x50000000, 125, 230, 80, 13, aKeyAssign[3][0]];
lpWnd[IDCALENDAR ] = ["BUTTON", 0, 0, 0x50000007, 10, 270, 240, 155, pTxtCalendar];
lpWnd[IDMONTHCOUNT] = ["COMBOBOX", 0, 0, 0x50010003, 20, 290, 40, 20, ""];
lpWnd[IDMONTHDESCR] = ["STATIC", 0, 0, 0x50000000, 65, 290, 180, 13, pTxtMonths];
lpWnd[IDCOLOR1 ] = ["STATIC", 0, 0, 0x50800000, 20, 320, 18, 18, ""];
lpWnd[IDCOLOR2 ] = ["STATIC", 0, 0, 0x50800000, 20, 340, 18, 18, ""];
lpWnd[IDCOLOR3 ] = ["STATIC", 0, 0, 0x50800000, 20, 360, 18, 18, ""];
lpWnd[IDCOLOR4 ] = ["STATIC", 0, 0, 0x50800000, 20, 380, 18, 18, ""];
lpWnd[IDCOLOR5 ] = ["STATIC", 0, 0, 0x50800000, 20, 400, 18, 18, ""];
lpWnd[IDCOLOR1BUTT] = ["BUTTON", 0, 0, 0x50010000, 45, 320, 170, 20, pTxtColor1];
lpWnd[IDCOLOR2BUTT] = ["BUTTON", 0, 0, 0x50010000, 45, 340, 170, 20, pTxtColor2];
lpWnd[IDCOLOR3BUTT] = ["BUTTON", 0, 0, 0x50010000, 45, 360, 170, 20, pTxtColor3];
lpWnd[IDCOLOR4BUTT] = ["BUTTON", 0, 0, 0x50010000, 45, 380, 170, 20, pTxtColor4];
lpWnd[IDCOLOR5BUTT] = ["BUTTON", 0, 0, 0x50010000, 45, 400, 170, 20, pTxtColor5];
lpWnd[IDRESET ] = ["BUTTON", 0, 0, 0x50012000, 220, 320, 20, 100, pTxtReset];
lpWnd[IDDFHLPTXT ] = ["STATIC", 0, 0, 0x40400000, 0, 110, 255, 155, pHlpTxtDF];
lpWnd[IDTFHLPTXT ] = ["STATIC", 0, 0, 0x40400000, 0, 130, 255, 140, pHlpTxtTF];
hWndDlgSet = oSys.Call("user32::CreateWindowEx" + _TCHAR,
0, //dwExStyle
pClassName, //lpClassName
pTxtSettings, //lpWindowName
0x90C80000, //WS_VISIBLE|WS_POPUP|WS_CAPTION|WS_SYSMENU
nX, //x
nY, //y
nWidth, //nWidth
nHeight, //nHeight
hWndDlgCal, //hWndParent
0, //ID
hInstanceDLL, //hInstance
DialogCallbackSet); //Script function callback
if (hWndDlgSet)
{
oSys.Call("user32::EnableWindow", hWndDlgCal, 0);
AkelPad.WindowGetMessage();
oSys.Call("gdi32::DeleteObject", hBrushColor);
}
}
function DialogCallbackSet(hWnd, uMsg, wParam, lParam)
{
var i, nLowParam, nHiwParam;
if (uMsg == 1) //WM_CREATE
{
//Create windows
for (i = 1000; i < lpWnd.length; ++i)
{
lpWnd[i][WND] = oSys.Call("user32::CreateWindowEx" + _TCHAR,
lpWnd[i][WNDEXSTY],//dwExStyle
lpWnd[i][WNDTYPE], //lpClassName
0, //lpWindowName
lpWnd[i][WNDSTY], //dwStyle
lpWnd[i][WNDX], //x
lpWnd[i][WNDY], //y
lpWnd[i][WNDW], //nWidth
lpWnd[i][WNDH], //nHeight
hWnd, //hWndParent
i, //ID
hInstanceDLL, //hInstance
0); //lpParam
//Set font and text
SetWndFontAndText(lpWnd[i][WND], hGuiFont, lpWnd[i][WNDTXT]);
}
//Set limit edit text
AkelPad.SendMessage(lpWnd[IDDF][WND], 197 /*EM_SETLIMITTEXT*/, 24, 0);
AkelPad.SendMessage(lpWnd[IDTF][WND], 197 /*EM_SETLIMITTEXT*/, 24, 0);
//Fill comboboxes
for (i = 0; i < 4; ++i)
{
AkelPad.MemCopy(lpBuffer, pTxtDate, _TSTR);
AkelPad.SendMessage(lpWnd[eval("IDASSIG" + i)][WND], 0x143 /*CB_ADDSTRING*/, 0, lpBuffer);
AkelPad.MemCopy(lpBuffer, pTxtDate + " " + pTxtTime, _TSTR);
AkelPad.SendMessage(lpWnd[eval("IDASSIG" + i)][WND], 0x143 /*CB_ADDSTRING*/, 0, lpBuffer);
AkelPad.MemCopy(lpBuffer, pTxtTime, _TSTR);
AkelPad.SendMessage(lpWnd[eval("IDASSIG" + i)][WND], 0x143 /*CB_ADDSTRING*/, 0, lpBuffer);
AkelPad.MemCopy(lpBuffer, pTxtTime + " " + pTxtDate, _TSTR);
AkelPad.SendMessage(lpWnd[eval("IDASSIG" + i)][WND], 0x143 /*CB_ADDSTRING*/, 0, lpBuffer);
AkelPad.SendMessage(lpWnd[eval("IDASSIG" + i)][WND], 0x14E /*CB_SETCURSEL*/, aKeyAssign[i][1], 0);
}
for (i = 1; i < 6; ++i)
{
AkelPad.MemCopy(lpBuffer, " " + i + " ", _TSTR);
AkelPad.SendMessage(lpWnd[IDMONTHCOUNT][WND], 0x143 /*CB_ADDSTRING*/, 0, lpBuffer);
}
AkelPad.SendMessage(lpWnd[IDMONTHCOUNT][WND], 0x14E /*CB_SETCURSEL*/, nMonthCount - 1, 0);
//Check
CheckButtons();
}
else if (uMsg == 7) //WM_SETFOCUS
{
if (bResetColors)
{
bResetColors = false;
oSys.Call("user32::SetFocus", lpWnd[IDRESET][WND]);
oSys.Call("user32::DefDlgProc" + _TCHAR, hWnd, 1025 /*DM_SETDEFID*/, IDRESET, 0);
}
else
oSys.Call("user32::SetFocus", lpWnd[IDSYSTEM][WND]);
}
else if (uMsg == 256) //WM_KEYDOWN
{
if (wParam == 112) //VK_F1
{
if (oSys.Call("user32::GetFocus") == lpWnd[IDDF][WND])
oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 273 /*WM_COMMAND*/, IDDFHLP, 0);
else if (oSys.Call("user32::GetFocus") == lpWnd[IDTF][WND])
oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 273 /*WM_COMMAND*/, IDTFHLP, 0);
}
else if ((wParam == 9 /*VK_TAB*/) || (wParam == 27 /*VK_ESCAPE*/))
{
if (oSys.Call("user32::IsWindowVisible", lpWnd[IDDFHLPTXT][WND]))
ShowFormatHelp(hWnd, lpWnd[IDDFHLPTXT][WND], 0);
else if (oSys.Call("user32::IsWindowVisible", lpWnd[IDTFHLPTXT][WND]))
ShowFormatHelp(hWnd, lpWnd[IDTFHLPTXT][WND], 0);
else if (wParam == 27 /*VK_ESCAPE*/)
oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 16 /*WM_CLOSE*/, 0, 0);
}
}
else if ((uMsg == 0x0201 /*WM_LBUTTONDOWN*/) || (uMsg == 0x0204 /*WM_RBUTTONDOWN*/) ||
(uMsg == 0x0207 /*WM_MBUTTONDOWN*/) || (uMsg == 0x020b /*WM_XBUTTONDOWN*/))
{
if (oSys.Call("user32::IsWindowVisible", lpWnd[IDDFHLPTXT][WND]))
ShowFormatHelp(hWnd, lpWnd[IDDFHLPTXT][WND], 0);
else if (oSys.Call("user32::IsWindowVisible", lpWnd[IDTFHLPTXT][WND]))
ShowFormatHelp(hWnd, lpWnd[IDTFHLPTXT][WND], 0);
}
else if (uMsg == 0x0138) //WM_CTLCOLORSTATIC
{
if ((lParam == lpWnd[IDDFHLPTXT][WND]) || (lParam == lpWnd[IDTFHLPTXT][WND]))
{
oSys.Call("gdi32::DeleteObject", hBrushColor);
oSys.Call("gdi32::SetTextColor", wParam, 0x006000);
oSys.Call("gdi32::SetBkColor", wParam, 0xFFFFFF);
hBrushColor = oSys.Call("gdi32::CreateSolidBrush", 0xFFFFFF);
return hBrushColor;
}
if (lParam == lpWnd[IDCOLOR1][WND])
{
oSys.Call("gdi32::DeleteObject", hBrushColor);
hBrushColor = oSys.Call("gdi32::CreateSolidBrush", aColor[4]);
return hBrushColor;
}
if (lParam == lpWnd[IDCOLOR2][WND])
{
oSys.Call("gdi32::DeleteObject", hBrushColor);
hBrushColor = oSys.Call("gdi32::CreateSolidBrush", aColor[1]);
return hBrushColor;
}
if (lParam == lpWnd[IDCOLOR3][WND])
{
oSys.Call("gdi32::DeleteObject", hBrushColor);
hBrushColor = oSys.Call("gdi32::CreateSolidBrush", aColor[2]);
return hBrushColor;
}
if (lParam == lpWnd[IDCOLOR4][WND])
{
oSys.Call("gdi32::DeleteObject", hBrushColor);
hBrushColor = oSys.Call("gdi32::CreateSolidBrush", aColor[3]);
return hBrushColor;
}
if (lParam == lpWnd[IDCOLOR5][WND])
{
oSys.Call("gdi32::DeleteObject", hBrushColor);
hBrushColor = oSys.Call("gdi32::CreateSolidBrush", aColor[5]);
return hBrushColor;
}
}
else if (uMsg == 273) //WM_COMMAND
{
nLowParam = LoWord(wParam);
nHiwParam = HiWord(wParam);
if ((nLowParam == IDSYSTEM) || (nLowParam == IDLONGDATE))
{
CheckButtons(nLowParam);
}
else if ((nLowParam == IDDF) && (nHiwParam == 0x300 /*EN_CHANGE*/))
{
oSys.Call("user32::GetWindowText" + _TCHAR, lpWnd[IDDF][WND], lpBuffer, 256);
pDateForm = AkelPad.MemRead(lpBuffer, _TSTR);
SetWndFontAndText(lpWnd[IDDATE][WND], hGuiFont, GetDate());
}
else if ((nLowParam == IDTF) && (nHiwParam == 0x300 /*EN_CHANGE*/))
{
oSys.Call("user32::GetWindowText" + _TCHAR, lpWnd[IDTF][WND], lpBuffer, 256);
pTimeForm = AkelPad.MemRead(lpBuffer, _TSTR);
SetWndFontAndText(lpWnd[IDTIME][WND], hGuiFont, GetTime());
}
else if (nLowParam == IDDFHLP)
ShowFormatHelp(hWnd, lpWnd[IDDFHLPTXT][WND],
! oSys.Call("user32::IsWindowVisible", lpWnd[IDDFHLPTXT][WND]));
else if (nLowParam == IDTFHLP)
ShowFormatHelp(hWnd, lpWnd[IDTFHLPTXT][WND],
! oSys.Call("user32::IsWindowVisible", lpWnd[IDTFHLPTXT][WND]));
else if ((nLowParam >= IDASSIG0) && (nLowParam <= IDASSIG3) && (nHiwParam == 1 /*CBN_SELCHANGE*/))
aKeyAssign[nLowParam - IDASSIG0][1] = AkelPad.SendMessage(lpWnd[nLowParam][WND], 0x147 /*CB_GETCURSEL*/, 0, 0);
else if ((nLowParam == IDMONTHCOUNT) && (nHiwParam == 1 /*CBN_SELCHANGE*/))
{
nMonthCount = AkelPad.SendMessage(lpWnd[IDMONTHCOUNT][WND], 0x147 /*CB_GETCURSEL*/, 0, 0) + 1;
SetWindowSize(hWndDlgCal);
MoveWindow(hMainWnd, hWndDlgCal, "CV");
}
else if ((nLowParam >= IDCOLOR1BUTT) && (nLowParam <= IDCOLOR5BUTT))
ChangeColor(hWnd, nLowParam);
else if (nLowParam == IDRESET)
{
bResetColors = true;
aColor = undefined;
aWndCalPos = GetWindowPos(hWndCal);
aWndSetPos = GetWindowPos(hWnd);
AkelPad.SendMessage(hWndCal, 0x1001 /*MCM_GETCURSEL*/, 0, lpSysTime);
oSys.Call("user32::PostMessage" + _TCHAR, hWnd, 16 /*WM_CLOSE*/, 0, 0);
}
}
else if (uMsg == 16) //WM_CLOSE
{
oSys.Call("user32::EnableWindow", hWndDlgCal, 1);
oSys.Call("user32::DestroyWindow", hWnd);
}
else if (uMsg == 2) //WM_DESTROY
oSys.Call("user32::PostQuitMessage", 0);
return 0;
}
function CheckButtons(nButton)
{
if (nButton == IDSYSTEM)
bSystem = ! bSystem;
else if (nButton == IDLONGDATE)
bLongDate = ! bLongDate;
AkelPad.SendMessage(lpWnd[IDSYSTEM][WND], 241 /*BM_SETCHECK*/, bSystem, 0);
AkelPad.SendMessage(lpWnd[IDLONGDATE][WND], 241 /*BM_SETCHECK*/, bLongDate, 0);
oSys.Call("user32::EnableWindow", lpWnd[IDLONGDATE][WND], bSystem);
oSys.Call("user32::EnableWindow", lpWnd[IDDF][WND], ! bSystem);
oSys.Call("user32::EnableWindow", lpWnd[IDTF][WND], ! bSystem);
oSys.Call("user32::EnableWindow", lpWnd[IDDFHLP][WND], ! bSystem);
oSys.Call("user32::EnableWindow", lpWnd[IDTFHLP][WND], ! bSystem);
SetWndFontAndText(lpWnd[IDDATE][WND], hGuiFont, GetDate());
SetWndFontAndText(lpWnd[IDTIME][WND], hGuiFont, GetTime());
}
function ShowFormatHelp(hWndDlg, hWndHlp, bShow)
{
if (bShow)
oSys.Call("user32::SetCapture", hWndDlg);
else
oSys.Call("user32::ReleaseCapture");
oSys.Call("user32::ShowWindow", hWndHlp, bShow);
}
function ChangeColor(hWnd, nButton)
{
var nCo = nButton - IDCOLOR1BUTT;
var lpChoCo = AkelPad.MemAlloc(4 * 9); //sizeof(CHOOSECOLOR)
var lpCusCo = AkelPad.MemAlloc(4 * 16); //sizeof(COLORREF) * 16
var hFocus = oSys.Call("user32::GetFocus");
var i;
if (nButton == IDCOLOR1BUTT)
nCo = 4;
else if (nButton == IDCOLOR5BUTT)
nCo = 5;
for(i = 0; i < 16; ++i)
AkelPad.MemCopy(lpCusCo + i * 4, 0, DT_DWORD);
AkelPad.MemCopy(lpChoCo , (4 * 9), DT_DWORD); //lStructSize
AkelPad.MemCopy(lpChoCo + 4, hWnd, DT_DWORD); //hWndOwner
AkelPad.MemCopy(lpChoCo + 8, 0, DT_DWORD); //hInstance
AkelPad.MemCopy(lpChoCo + 12, aColor[nCo], DT_DWORD); //rgbResult
AkelPad.MemCopy(lpChoCo + 16, lpCusCo, DT_DWORD); //lpCustColors
AkelPad.MemCopy(lpChoCo + 20, 0x103, DT_DWORD); //Flags - CC_ANYCOLOR|CC_FULLOPEN|CC_RGBINIT
AkelPad.MemCopy(lpChoCo + 24, 0, DT_DWORD); //lCustData
AkelPad.MemCopy(lpChoCo + 28, 0, DT_DWORD); //lpfnHook
AkelPad.MemCopy(lpChoCo + 32, 0, DT_DWORD); //lpTemplateName
if (oSys.Call("comdlg32::ChooseColor" + _TCHAR, lpChoCo))
{
aColor[nCo] = AkelPad.MemRead(lpChoCo + 12, DT_DWORD);
SetWndFontAndText(lpWnd[nButton - 5][WND], hGuiFont, lpWnd[nButton - 5][WNDTXT]);
AkelPad.SendMessage(hWndCal, 0x100A /*MCM_SETCOLOR*/, nCo, aColor[nCo]);
}
AkelPad.MemFree(lpChoCo);
AkelPad.MemFree(lpCusCo);
oSys.Call("user32::SetFocus", hFocus);
}
|
Last edited by KDJ on Thu Apr 07, 2011 8:03 pm; edited 3 times in total |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Êèåâ, Ðóñü
|
Posted: Tue Mar 29, 2011 3:58 pm Post subject: |
|
|
BlockSelect.js
| Code: | ///Select textblock by borders
///Âûäåëÿåò áëîê ïî çàäàííûì ãðàíèöàì
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=12241#12241
// Version: 1.1 (2011.07.21)
//
// Ïðèìåðû:
// -"ScriptBlock select" Call("Scripts::Main", 1, "BlockSelect.js") - ïî óìîë÷àíèþ (áåç àãðóìåíòîâ) âûäåëÿåòñÿ òåêñòîâûé áëîê, êîòîðûé íàõîäèòñÿ â {}
// -"SelCompleteLine" Call("Scripts::Main", 1, "BlockSelect.js", `-tagStart="\r" -tagEnd="\r" -inclTags=0`) - ïîëíîå âûäåëåíèå âñåõ çàòðîíóòûõ ñòðîê
// -"CommentBlock select" Call("Scripts::Main", 1, "BlockSelect.js", `-tagStart="/*" -tagEnd="*/"`) - âûäåëåíèå áëîêà êîììåíòàðèåâ
// -"[code]{...}[/code]" Call("Scripts::Main", 1, "BlockSelect.js", `-tagStart="[code]" -tagEnd="[/code]" -inclTags=0`) - âûäåëåíèå òåêñòà, íàõîäÿùåãîñÿ ìåæäó îïðåäåë¸ííûìè òýãàìè
if (! AkelPad.Include("selCompleteLine.js")) WScript.Quit();
sbOpen = escSequencesProcessing(AkelPad.GetArgValue("tagStart", sbOpen)); //òýã, ñ êîòîðîãî íà÷èíàòü âûäåëåíèå
sbClose = escSequencesProcessing(AkelPad.GetArgValue("tagEnd", sbClose)); //òýã, íà êîòîðîì çàêàí÷èâàòü âûäåëåíèå
var bIncludeTags = AkelPad.GetArgValue("inclTags", 1); //çàõâàòûâàòü òýãè â âûäåëåíèå èëè íåò
var Range;
if (sbOpen != pBreak)
Range = getRangebyBordersEx(AkelPad.GetSelStart(), sbOpen, sbClose, bIncludeTags);
else
Range = getRangebyBorders(AkelPad.GetSelStart(), AkelPad.GetSelEnd(), pBreak, pBreak, bIncludeTags)
if (Range != null)
AkelPad.SetSel(Range[0], Range[1]); |
BlockDeclose.js
| Code: | ///Declose scriptblock
///Óáèðàåò áëî÷íîñòü (ñêîáêè { òåêñò }) âûäåëåííîãî ñêðèïòà
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=12241#12241
// Version: 1.1 (2011.03.30)
if (! AkelPad.Include("selCompleteLine.js")) WScript.Quit();
var iSelStart = AkelPad.GetSelStart();
var iSelEnd = AkelPad.GetSelEnd();
var Range;
if (iSelStart == iSelEnd)
{
Range = getRangebyBordersEx(iSelStart, sbOpen, sbClose, true);
if (Range == null) WScript.Quit();
iSelStart = Range[0];
iSelEnd = Range[1] - 1; //áåç êîíå÷íîãî ïåðåâîäà ñòðîêè
}
Range = getRangeCompleteLine(iSelStart, iSelEnd);
if (Range == null) WScript.Quit();
var pText = getTextbyRange(Range);
getShift(); //îïðåäåëåíèå ñîäåðæèìîãî ñäâèãà èç íàñòðîåê
pText = pText.replace(new RegExp(pBreak + sShift, "g"), pBreak); //óäàëÿåì ëèøíèå ñäâèãè ïî âñåìó áëîêó
pText = pText.replace(new RegExp(sbOpen), ""); //óäàëÿåì îòêðûâàþùèé òýã
pText = oStr.leftback(pText, sbClose); //óäàëÿåì çàêðûâàþùèé òýã
if (pText.indexOf(pBreak) != 0)
pText += sShift; //âîññòàíàâëèâàåì èçëèøíå óäàë¸ííûé ñäâèã âíèçó-ñïðàâà
AkelPad.SetSel(Range[0], Range[1]);
AkelPad.ReplaceSel(pText); |
p.s.: Instructor, áëàãîäàðþ çà èäåþ!
N.B.: Îáà ñêðèïòà èñïîëüçóþò selCompleteLine.js.
Last edited by VladSh on Thu Jul 21, 2011 3:46 pm; edited 1 time in total |
|
| Back to top |
|
 |
FeyFre
Joined: 07 Aug 2007 Posts: 1893 Location: Vinnitsa, Ukraine
|
Posted: Sun Apr 03, 2011 9:40 pm Post subject: |
|
|
Microsoft Data Access - ActiveX Data Objects - constants and helpers set
ADODB.js | Code: | /*******************************************************************************
* Microsoft Data Access - ActiveX Data Objects - constants and helpers set
* v1.2
*
* Based on ADO Import Type Library v2.81
* Author: Panych Y.W. panych.y (bark) gmail.com
* Forum thread: http://akelpad.sourceforge.net/forum/viewtopic.php?p=12315#12315
* Download: http://outstanding.hmarka.net/akelpad/scripts/ADODB.js
******************************************************************************/
ADODB =
{
CursorTypeEnum: {
adOpenUnspecified: -1,
adOpenForwardOnly: 0,
adOpenKeyset: 1,
adOpenDynamic: 2,
adOpenStatic: 3
},
CursorOptionEnum: {
adHoldRecords: 256,
adMovePrevious: 512,
adAddNew: 16778240,
adDelete: 16779264,
adUpdate: 16809984,
adBookmark: 8192,
adApproxPosition: 16384,
adUpdateBatch: 65536,
adResync: 131072,
adNotify: 262144,
adFind: 524288,
adSeek: 4194304,
adIndex: 8388608
},
LockTypeEnum: {
adLockUnspecified: -1,
adLockReadOnly: 1,
adLockPessimistic: 2,
adLockOptimistic: 3,
adLockBatchOptimistic: 4
},
ExecuteOptionEnum: {
adOptionUnspecified: -1,
adAsyncExecute: 16,
adAsyncFetch: 32,
adAsyncFetchNonBlocking: 64,
adExecuteNoRecords: 128,
adExecuteStream: 1024,
adExecuteRecord: 2048
},
ConnectOptionEnum: {
adConnectUnspecified: -1,
adAsyncConnect: 16
},
ObjectStateEnum: {
adStateClosed: 0,
adStateOpen: 1,
adStateConnecting: 2,
adStateExecuting: 4,
adStateFetching: 8
},
CursorLocationEnum: {
adUseNone: 1,
adUseServer: 2,
adUseClient: 3,
adUseClientBatch: 3
},
DataTypeEnum: {
adEmpty: 0,
adTinyInt: 16,
adSmallInt: 2,
adInteger: 3,
adBigInt: 20,
adUnsignedTinyInt: 17,
adUnsignedSmallInt: 18,
adUnsignedInt: 19,
adUnsignedBigInt: 21,
adSingle: 4,
adDouble: 5,
adCurrency: 6,
adDecimal: 14,
adNumeric: 131,
adBoolean: 11,
adError: 10,
adUserDefined: 132,
adVariant: 12,
adIDispatch: 9,
adIUnknown: 13,
adGUID: 72,
adDate: 7,
adDBDate: 133,
adDBTime: 134,
adDBTimeStamp: 135,
adBSTR: 8,
adChar: 129,
adVarChar: 200,
adLongVarChar: 201,
adWChar: 130,
adVarWChar: 202,
adLongVarWChar: 203,
adBinary: 128,
adVarBinary: 204,
adLongVarBinary: 205,
adChapter: 136,
adFileTime: 64,
adPropVariant: 138,
adVarNumeric: 139,
adArray: 8192
},
FieldAttributeEnum: {
adFldUnspecified: -1,
adFldMayDefer: 2,
adFldUpdatable: 4,
adFldUnknownUpdatable: 8,
adFldFixed: 16,
adFldIsNullable: 32,
adFldMayBeNull: 64,
adFldLong: 128,
adFldRowID: 256,
adFldRowVersion: 512,
adFldCacheDeferred: 4096,
adFldIsChapter: 8192,
adFldNegativeScale: 16384,
adFldKeyColumn: 32768,
adFldIsRowURL: 65536,
adFldIsDefaultStream: 131072,
adFldIsCollection: 262144
},
EditModeEnum: {
adEditNone: 0,
adEditInProgress: 1,
adEditAdd: 2,
adEditDelete: 4
},
RecordStatusEnum: {
adRecOK: 0,
adRecNew: 1,
adRecModified: 2,
adRecDeleted: 4,
adRecUnmodified: 8,
adRecInvalid: 16,
adRecMultipleChanges: 64,
adRecPendingChanges: 128,
adRecCanceled: 256,
adRecCantRelease: 1024,
adRecConcurrencyViolation: 2048,
adRecIntegrityViolation: 4096,
adRecMaxChangesExceeded: 8192,
adRecObjectOpen: 16384,
adRecOutOfMemory: 32768,
adRecPermissionDenied: 65536,
adRecSchemaViolation: 131072,
adRecDBDeleted: 262144
},
GetRowsOptionEnum: {
adGetRowsRest: -1
},
PositionEnum: {
adPosUnknown: -1,
adPosBOF: -2,
adPosEOF: -3
},
PositionEnum_Param: { //! Fully equal PositionEnum(typedef-ed in typelib)
adPosUnknown: -1,
adPosBOF: -2,
adPosEOF: -3
},
BookmarkEnum: {
adBookmarkCurrent: 0,
adBookmarkFirst: 1,
adBookmarkLast: 2
},
MarshalOptionsEnum: {
adMarshalAll: 0,
adMarshalModifiedOnly: 1
},
AffectEnum: {
adAffectCurrent: 1,
adAffectGroup: 2,
adAffectAll: 3,
adAffectAllChapters: 4
},
ResyncEnum: {
adResyncUnderlyingValues: 1,
adResyncAllValues: 2
},
CompareEnum: {
adCompareLessThan: 0,
adCompareEqual: 1,
adCompareGreaterThan: 2,
adCompareNotEqual: 3,
adCompareNotComparable: 4
},
FilterGroupEnum: {
adFilterNone: 0,
adFilterPendingRecords: 1,
adFilterAffectedRecords: 2,
adFilterFetchedRecords: 3,
adFilterPredicate: 4,
adFilterConflictingRecords: 5
},
SearchDirectionEnum: {
adSearchForward: 1,
adSearchBackward: -1
},
SearchDirection: {
adSearchForward: 1,
adSearchBackward: -1
},
PersistFormatEnum: {
adPersistADTG: 0,
adPersistXML: 1
},
StringFormatEnum: {
adClipString: 2
},
ConnectPromptEnum: {
adPromptAlways: 1,
adPromptComplete: 2,
adPromptCompleteRequired: 3,
adPromptNever: 4
},
ConnectModeEnum: {
adModeUnknown: 0,
adModeRead: 1,
adModeWrite: 2,
adModeReadWrite: 3,
adModeShareDenyRead: 4,
adModeShareDenyWrite: 8,
adModeShareExclusive: 12,
adModeShareDenyNone: 16,
adModeRecursive: 4194304
},
RecordCreateOptionsEnum: {
adCreateCollection: 8192,
adCreateStructDoc: -2147483648,
adCreateNonCollection: 0,
adOpenIfExists: 33554432,
adCreateOverwrite: 67108864,
adFailIfNotExists: -1
},
RecordOpenOptionsEnum: {
adOpenRecordUnspecified: -1,
adOpenSource: 8388608,
adOpenOutput: 8388608,
adOpenAsync: 4096,
adDelayFetchStream: 16384,
adDelayFetchFields: 32768,
adOpenExecuteCommand: 65536
},
IsolationLevelEnum: {
adXactUnspecified: -1,
adXactChaos: 16,
adXactReadUncommitted: 256,
adXactBrowse: 256,
adXactCursorStability: 4096,
adXactReadCommitted: 4096,
adXactRepeatableRead: 65536,
adXactSerializable: 1048576,
adXactIsolated: 1048576
},
XactAttributeEnum: {
adXactCommitRetaining: 131072,
adXactAbortRetaining: 262144,
adXactAsyncPhaseOne: 524288,
adXactSyncPhaseOne: 1048576
},
PropertyAttributesEnum: {
adPropNotSupported: 0,
adPropRequired: 1,
adPropOptional: 2,
adPropRead: 512,
adPropWrite: 1024
},
ErrorValueEnum: {
adErrProviderFailed: 3000,
adErrInvalidArgument: 3001,
adErrOpeningFile: 3002,
adErrReadFile: 3003,
adErrWriteFile: 3004,
adErrNoCurrentRecord: 3021,
adErrIllegalOperation: 3219,
adErrCantChangeProvider: 3220,
adErrInTransaction: 3246,
adErrFeatureNotAvailable: 3251,
adErrItemNotFound: 3265,
adErrObjectInCollection: 3367,
adErrObjectNotSet: 3420,
adErrDataConversion: 3421,
adErrObjectClosed: 3704,
adErrObjectOpen: 3705,
adErrProviderNotFound: 3706,
adErrBoundToCommand: 3707,
adErrInvalidParamInfo: 3708,
adErrInvalidConnection: 3709,
adErrNotReentrant: 3710,
adErrStillExecuting: 3711,
adErrOperationCancelled: 3712,
adErrStillConnecting: 3713,
adErrInvalidTransaction: 3714,
adErrNotExecuting: 3715,
adErrUnsafeOperation: 3716,
adwrnSecurityDialog: 3717,
adwrnSecurityDialogHeader: 3718,
adErrIntegrityViolation: 3719,
adErrPermissionDenied: 3720,
adErrDataOverflow: 3721,
adErrSchemaViolation: 3722,
adErrSignMismatch: 3723,
adErrCantConvertvalue: 3724,
adErrCantCreate: 3725,
adErrColumnNotOnThisRow: 3726,
adErrURLDoesNotExist: 3727,
adErrTreePermissionDenied: 3728,
adErrInvalidURL: 3729,
adErrResourceLocked: 3730,
adErrResourceExists: 3731,
adErrCannotComplete: 3732,
adErrVolumeNotFound: 3733,
adErrOutOfSpace: 3734,
adErrResourceOutOfScope: 3735,
adErrUnavailable: 3736,
adErrURLNamedRowDoesNotExist: 3737,
adErrDelResOutOfScope: 3738,
adErrPropInvalidColumn: 3739,
adErrPropInvalidOption: 3740,
adErrPropInvalidValue: 3741,
adErrPropConflicting: 3742,
adErrPropNotAllSettable: 3743,
adErrPropNotSet: 3744,
adErrPropNotSettable: 3745,
adErrPropNotSupported: 3746,
adErrCatalogNotSet: 3747,
adErrCantChangeConnection: 3748,
adErrFieldsUpdateFailed: 3749,
adErrDenyNotSupported: 3750,
adErrDenyTypeNotSupported: 3751,
adErrProviderNotSpecified: 3753,
adErrConnectionStringTooLong: 3754
},
ParameterAttributesEnum: {
adParamSigned: 16,
adParamNullable: 64,
adParamLong: 128
},
ParameterDirectionEnum: {
adParamUnknown: 0,
adParamInput: 1,
adParamOutput: 2,
adParamInputOutput: 3,
adParamReturnValue: 4
},
CommandTypeEnum: {
adCmdUnspecified: -1,
adCmdUnknown: 8,
adCmdText: 1,
adCmdTable: 2,
adCmdStoredProc: 4,
adCmdFile: 256,
adCmdTableDirect: 512
},
EventStatusEnum: {
adStatusOK: 1,
adStatusErrorsOccurred: 2,
adStatusCantDeny: 3,
adStatusCancel: 4,
adStatusUnwantedEvent: 5
},
EventReasonEnum: {
adRsnAddNew: 1,
adRsnDelete: 2,
adRsnUpdate: 3,
adRsnUndoUpdate: 4,
adRsnUndoAddNew: 5,
adRsnUndoDelete: 6,
adRsnRequery: 7,
adRsnResynch: 8,
adRsnClose: 9,
adRsnMove: 10,
adRsnFirstChange: 11,
adRsnMoveFirst: 12,
adRsnMoveNext: 13,
adRsnMovePrevious: 14,
adRsnMoveLast: 15
},
SchemaEnum: {
adSchemaProviderSpecific: -1,
adSchemaAsserts: 0,
adSchemaCatalogs: 1,
adSchemaCharacterSets: 2,
adSchemaCollations: 3,
adSchemaColumns: 4,
adSchemaCheckConstraints: 5,
adSchemaConstraintColumnUsage: 6,
adSchemaConstraintTableUsage: 7,
adSchemaKeyColumnUsage: 8,
adSchemaReferentialContraints: 9,
adSchemaReferentialConstraints: 9,
adSchemaTableConstraints: 10,
adSchemaColumnsDomainUsage: 11,
adSchemaIndexes: 12,
adSchemaColumnPrivileges: 13,
adSchemaTablePrivileges: 14,
adSchemaUsagePrivileges: 15,
adSchemaProcedures: 16,
adSchemaSchemata: 17,
adSchemaSQLLanguages: 18,
adSchemaStatistics: 19,
adSchemaTables: 20,
adSchemaTranslations: 21,
adSchemaProviderTypes: 22,
adSchemaViews: 23,
adSchemaViewColumnUsage: 24,
adSchemaViewTableUsage: 25,
adSchemaProcedureParameters: 26,
adSchemaForeignKeys: 27,
adSchemaPrimaryKeys: 28,
adSchemaProcedureColumns: 29,
adSchemaDBInfoKeywords: 30,
adSchemaDBInfoLiterals: 31,
adSchemaCubes: 32,
adSchemaDimensions: 33,
adSchemaHierarchies: 34,
adSchemaLevels: 35,
adSchemaMeasures: 36,
adSchemaProperties: 37,
adSchemaMembers: 38,
adSchemaTrustees: 39,
adSchemaFunctions: 40,
adSchemaActions: 41,
adSchemaCommands: 42,
adSchemaSets: 43
},
FieldStatusEnum: {
adFieldOK: 0,
adFieldCantConvertValue: 2,
adFieldIsNull: 3,
adFieldTruncated: 4,
adFieldSignMismatch: 5,
adFieldDataOverflow: 6,
adFieldCantCreate: 7,
adFieldUnavailable: 8,
adFieldPermissionDenied: 9,
adFieldIntegrityViolation: 10,
adFieldSchemaViolation: 11,
adFieldBadStatus: 12,
adFieldDefault: 13,
adFieldIgnore: 15,
adFieldDoesNotExist: 16,
adFieldInvalidURL: 17,
adFieldResourceLocked: 18,
adFieldResourceExists: 19,
adFieldCannotComplete: 20,
adFieldVolumeNotFound: 21,
adFieldOutOfSpace: 22,
adFieldCannotDeleteSource: 23,
adFieldReadOnly: 24,
adFieldResourceOutOfScope: 25,
adFieldAlreadyExists: 26,
adFieldPendingInsert: 65536,
adFieldPendingDelete: 131072,
adFieldPendingChange: 262144,
adFieldPendingUnknown: 524288,
adFieldPendingUnknownDelete: 1048576
},
SeekEnum: {
adSeekFirstEQ: 1,
adSeekLastEQ: 2,
adSeekAfterEQ: 4,
adSeekAfter: 8,
adSeekBeforeEQ: 16,
adSeekBefore: 32
},
ADCPROP_UPDATECRITERIA_ENUM: {
adCriteriaKey: 0,
adCriteriaAllCols: 1,
adCriteriaUpdCols: 2,
adCriteriaTimeStamp: 3
},
ADCPROP_ASYNCTHREADPRIORITY_ENUM: {
adPriorityLowest: 1,
adPriorityBelowNormal: 2,
adPriorityNormal: 3,
adPriorityAboveNormal: 4,
adPriorityHighest: 5
},
ADCPROP_AUTORECALC_ENUM: {
adRecalcUpFront: 0,
adRecalcAlways: 1
},
ADCPROP_UPDATERESYNC_ENUM: {
adResyncNone: 0,
adResyncAutoIncrement: 1,
adResyncConflicts: 2,
adResyncUpdates: 4,
adResyncInserts: 8,
adResyncAll: 15
},
MoveRecordOptionsEnum: {
adMoveUnspecified: -1,
adMoveOverWrite: 1,
adMoveDontUpdateLinks: 2,
adMoveAllowEmulation: 4
},
CopyRecordOptionsEnum: {
adCopyUnspecified: -1,
adCopyOverWrite: 1,
adCopyAllowEmulation: 4,
adCopyNonRecursive: 2
},
StreamTypeEnum: {
adTypeBinary: 1,
adTypeText: 2
},
LineSeparatorEnum: {
adLF: 10,
adCR: 13,
adCRLF: -1
},
StreamOpenOptionsEnum: {
adOpenStreamUnspecified: -1,
adOpenStreamAsync: 1,
adOpenStreamFromRecord: 4
},
StreamWriteEnum: {
adWriteChar: 0,
adWriteLine: 1,
stWriteChar: 0,
stWriteLine: 1
},
SaveOptionsEnum: {
adSaveCreateNotExist: 1,
adSaveCreateOverWrite: 2
},
FieldEnum: {
adDefaultStream: -1,
adRecordURL: -2
},
StreamReadEnum: {
adReadAll: -1,
adReadLine: -2
},
RecordTypeEnum: {
adSimpleRecord: 0,
adCollectionRecord: 1,
adStructDoc: 2
},
Connection: function(){return new ActiveXObject("ADODB.Connection");},
Record: function(){return new ActiveXObject("ADODB.Record");},
Stream: function(){return new ActiveXObject("ADODB.Stream");},
Command: function(){return new ActiveXObject("ADODB.Command");},
Recordset: function(){return new ActiveXObject("ADODB.Recordset");},
Parameter: function(){return new ActiveXObject("ADODB.Parameter");}
};
|
DOWNLOAD
Usage sample | Code: | //! ADODB.js usage sample
//! TEST.MBD countains table populaed with some data
//! CREATE TABLE tab1 (data VARCHAR(32), param INTEGER );
AkelPad.Include("ADODB.js");
var conn = ADODB.Connection();
conn.Open("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\TEST.MDB;","","");
var comm = ADODB.Command();
comm.CommandText = "SELECT data, param * FROM tab1 WHERE param = @prm";
comm.ActiveConnection = conn;
comm.NamedParameters = true;
comm.CommandType = ADODB.CommandTypeEnum.adCmdText;
comm.Parameters.Append(comm.CreateParameter("@prm", ADODB.DataTypeEnum.adInteger, ADODB.ParameterDirectionEnum.adParamInput, 4/*sozeof(adInteger)*/, 1));
var res = comm.Execute();
var result = "";
while(res && !res.EOF)
{
var cnt = res.Fields.Count;
var i =0;
while(i<cnt)
{
result += " " +res.Fields.Item(parseInt(i)).Name+": " + res.Fields.Item(parseInt(i));
i++;
}
WScript.Echo(result);
result = "";
res.MoveNext();
}
if(res) res.Close();
conn.Close();
res = null;
comm = null;
conn = null;
|
Last edited by FeyFre on Wed Feb 20, 2013 12:50 am; edited 3 times in total |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Êèåâ, Ðóñü
|
Posted: Mon Apr 04, 2011 1:38 pm Post subject: |
|
|
CaseUpperLower.js
| Code: | ///Change registry: mixed -> UPPER <-> lower
///Èçìåíÿåò ðåãèñòð òåêñòà ïî êðóãó: ñìåøàííûé -> ÂÅÐÕÍÈÉ -> íèæíèé
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=12318#12318
// Version: 1.4 (2012.08.23)
var pText = AkelPad.GetSelText();
if (!pText)
{
if (! AkelPad.Include("CaretSelect.js")) WScript.Quit();
WordCaretSelect();
pText = AkelPad.GetSelText();
}
if (pText)
{
var tmpText = pText.toUpperCase();
if (pText == tmpText)
AkelPad.Command(4176); //ïåðåâîäèì â íèæíèé ðåãèñòð
else
AkelPad.Command(4175); //ïåðåâîäèì â ÂÅÐÕÍÈÉ ðåãèñòð
} |
CaseUpperLowerProper.js
| Code: | ///Change registry: mixed -> UPPER -> lower -> Proper, by analogy with Shift+F3 in MS Word
///Èçìåíÿåò ðåãèñòð òåêñòà ïî êðóãó: ñìåøàííûé -> ÂÅÐÕÍÈÉ -> íèæíèé -> Íà÷èíàòü Ñ Ïðîïèñíûõ ïî àíàëîãèè, êàê ýòî äåëàåò MS Word
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=12318#12318
// Version: 1.1 (2012.08.23)
var pText = AkelPad.GetSelText();
if (!pText)
{
if (! AkelPad.Include("CaretSelect.js")) WScript.Quit();
WordCaretSelect();
pText = AkelPad.GetSelText();
}
if (pText)
{
var tmpText = pText.toUpperCase();
if (pText == tmpText)
AkelPad.Command(4176); //ïåðåâîäèì â íèæíèé ðåãèñòð
else
{
tmpText = pText.toLowerCase();
if (pText == tmpText)
AkelPad.Command(4178); //Íà÷èíàòü Ñ Ïðîïèñíûõ
else
AkelPad.Command(4175); //ïåðåâîäèì â ÂÅÐÕÍÈÉ ðåãèñòð
}
} |
N.B. Â êîäå èñïîëüçóåòñÿ CaretSelect.js.
Last edited by VladSh on Thu Aug 23, 2012 10:48 am; edited 3 times in total |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4649
|
Posted: Sun Apr 24, 2011 4:08 pm Post subject: |
|
|
OpenSaveMask.js | Code: | // http://akelpad.sourceforge.net/forum/viewtopic.php?p=12548#12548
// Version v1.5
//
//
//// Open/Convert files.
//
// Arguments:
// -OpenMask="C:\MyFolder\*.*" -Search any files in "C:\MyFolder".
// -OpenList="C:\files.lst" -Open files specified in "files.lst".
// -SubDir=true -Search recursively (default is false).
// -OpenCodepage=-1 -Open codepage, if -1 it will be autodetected (default is -1).
// -OpenBOM=-1 -File byte order mark, if -1 it will be autodetected (default is -1).
// -OpenBinary=-1 -Open binary file, 1 - open if binary, 0 - don't open if binary, -1 - prompt (default is 0).
// -SaveDir="" -Save directory, if "" files will be saved in place.
// -SaveCodepage=65001 -Save codepage, if -1 current codepage will be used (default is -1).
// -SaveBOM=1 -File byte order mark, 1 - exist, 2 - doesn't exist, -1 - current BOM will be used (default is -1).
// -Silent=true -Display no messages (default is false).
// -CloseNoFiles=false -Don't close program, if after script ending no files are opened (default is true).
//
// Remark:
// If SaveCodepage and SaveBOM not specified when no convertion operation will occur and files will be just opened.
//
// Usage (open):
// Call("Scripts::Main", 1, "OpenSaveMask.js", `-OpenMask="C:\MyFolder\*.txt" -SubDir=true`)
//
// Usage (convert by mask):
// Call("Scripts::Main", 1, "OpenSaveMask.js", `-OpenMask="C:\MyFolder\*.txt" -SubDir=true -SaveCodepage=65001 -SaveBOM=1`)
//Arguments
var pOpenMask=AkelPad.GetArgValue("OpenMask", "");
var pOpenList=AkelPad.GetArgValue("OpenList", "");
var bSubDir=AkelPad.GetArgValue("SubDir", false);
var nOpenCodepage=AkelPad.GetArgValue("OpenCodepage", -1);
var nOpenBOM=AkelPad.GetArgValue("OpenBOM", -1);
var nOpenBinary=AkelPad.GetArgValue("OpenBinary", 0);
var pSaveDir=AkelPad.GetArgValue("SaveDir", "");
var nSaveCodepage=AkelPad.GetArgValue("SaveCodepage", -1);
var nSaveBOM=AkelPad.GetArgValue("SaveBOM", -1);
var bSilent=AkelPad.GetArgValue("Silent", false);
var bCloseNoFiles=AkelPad.GetArgValue("CloseNoFiles", true);
var hMainWnd=AkelPad.GetMainWnd();
var oSys=AkelPad.SystemFunction();
var pFileList="";
var dwCmdOptions;
var nAllFiles=0;
var nDoneFiles=0;
var nErrors=0;
if (pOpenMask || pOpenList)
{
dwCmdOptions=AkelPad.SendMessage(hMainWnd, 1145 /*AKD_GETCMDLINEOPTIONS*/, 0, 0);
if (nOpenBinary == 1)
AkelPad.SendMessage(hMainWnd, 1146 /*AKD_SETCMDLINEOPTIONS*/, (dwCmdOptions | 0x10 /*CLO_MSGOPENBINARYYES*/) & ~0x20 /*CLO_MSGOPENBINARYNO*/, 0);
else if (nOpenBinary == 0)
AkelPad.SendMessage(hMainWnd, 1146 /*AKD_SETCMDLINEOPTIONS*/, (dwCmdOptions & ~0x10 /*CLO_MSGOPENBINARYYES*/) | 0x20 /*CLO_MSGOPENBINARYNO*/, 0);
else if (nOpenBinary == -1)
AkelPad.SendMessage(hMainWnd, 1146 /*AKD_SETCMDLINEOPTIONS*/, (dwCmdOptions & ~0x10 /*CLO_MSGOPENBINARYYES*/) & ~0x20 /*CLO_MSGOPENBINARYNO*/, 0);
if (pOpenMask)
{
Locate(pOpenMask, bSubDir);
}
if (pOpenList)
{
var pFilesText;
var pLinesArray;
var nIndex;
if (pFilesText=AkelPad.ReadFile(pOpenList))
{
pFilesText=pFilesText.replace(/\r\r\n|\r\n|\r|\n/g, "\n");
if (pLinesArray=pFilesText.split("\n"))
{
for (nIndex=0; nIndex < pLinesArray.length; ++nIndex)
{
if (pLinesArray[nIndex])
{
DoFile(pLinesArray[nIndex], pSaveDir);
}
}
}
}
}
AkelPad.SendMessage(hMainWnd, 1146 /*AKD_SETCMDLINEOPTIONS*/, dwCmdOptions, 0);
if (nSaveCodepage != -1 || nSaveBOM != -1)
{
if (nAllFiles && AkelPad.IsMDI())
AkelPad.Command(4325 /*IDM_WINDOW_FILEEXIT*/);
if (!bSilent)
WScript.Echo("Converted: " + nDoneFiles + " of " + nAllFiles + " files (" + nErrors + " errors)");
}
if (bCloseNoFiles)
{
if (AkelPad.SendMessage(hMainWnd, 1292 /*AKD_FRAMENOWINDOWS*/, 0, 0) ||
(AkelPad.IsMDI() == 1 && AkelPad.SendMessage(hMainWnd, 1291 /*AKD_FRAMESTATS*/, 0 /*FWS_COUNTALL*/, 0) == 1 &&
!AkelPad.GetEditFile(0) && !AkelPad.GetEditModified(0)))
{
AkelPad.Command(4109 /*IDM_FILE_EXIT*/);
}
}
}
function Locate(pSearchFor, bSubDir)
{
var lpFindData=AkelPad.MemAlloc(592 /*sizeof(WIN32_FIND_DATAW)*/);
var lpLocalFileTime=AkelPad.MemAlloc(8 /*sizeof(FILETIME)*/);
var lpSystemTime=AkelPad.MemAlloc(16 /*sizeof(SYSTEMTIME)*/);
var lpWriteTime=[];
var hSearch;
var pDir;
var pWildcard;
var pFileName;
var nSize;
var nFileSizeHigh;
var nFileSizeLow;
var dwAttributes;
var nOffset;
var bStop=false;
if ((nOffset=pSearchFor.lastIndexOf("\\")) != -1)
{
pDir=pSearchFor.substr(0, nOffset);
pWildcard=pSearchFor.substr(nOffset + 1);
//Enumerate directory
if ((hSearch=oSys.Call("kernel32::FindFirstFile" + _TCHAR, pSearchFor, lpFindData)) != -1 /*INVALID_HANDLE_VALUE*/)
{
do
{
pFileName=AkelPad.MemRead(lpFindData + 44 /*offsetof(WIN32_FIND_DATAW, cFileName)*/, _TSTR);
if (pFileName == "." || pFileName == "..") continue;
dwAttributes=AkelPad.MemRead(lpFindData /*offsetof(WIN32_FIND_DATAW, dwAttributes)*/, 3 /*DT_DWORD*/);
if (!(dwAttributes & 0x10 /*FILE_ATTRIBUTE_DIRECTORY*/))
{
//File size
nFileSizeHigh=AkelPad.MemRead(lpFindData + 28 /*offsetof(WIN32_FIND_DATAW, nFileSizeHigh)*/, 3 /*DT_DWORD*/);
nFileSizeLow=AkelPad.MemRead(lpFindData + 32 /*offsetof(WIN32_FIND_DATAW, nFileSizeLow)*/, 3 /*DT_DWORD*/);
nSize=(nFileSizeHigh * (0xFFFFFFFF + 1)) + nFileSizeLow;
//Get write time
oSys.Call("kernel32::FileTimeToLocalFileTime", lpFindData + 20 /*offsetof(WIN32_FIND_DATAW, ftLastWriteTime)*/, lpLocalFileTime);
oSys.Call("kernel32::FileTimeToSystemTime", lpLocalFileTime, lpSystemTime);
lpWriteTime.wYear=AkelPad.MemRead(lpSystemTime /*offsetof(SYSTEMTIME, wYear)*/, 4 /*DT_WORD*/);
lpWriteTime.wMonth=AkelPad.MemRead(lpSystemTime + 2 /*offsetof(SYSTEMTIME, wMonth)*/, 4 /*DT_WORD*/);
lpWriteTime.wDayOfWeek=AkelPad.MemRead(lpSystemTime + 4 /*offsetof(SYSTEMTIME, wDayOfWeek)*/, 4 /*DT_WORD*/);
lpWriteTime.wDay=AkelPad.MemRead(lpSystemTime + 6 /*offsetof(SYSTEMTIME, wDay)*/, 4 /*DT_WORD*/);
lpWriteTime.wHour=AkelPad.MemRead(lpSystemTime + 8 /*offsetof(SYSTEMTIME, wHour)*/, 4 /*DT_WORD*/);
lpWriteTime.wMinute=AkelPad.MemRead(lpSystemTime + 10 /*offsetof(SYSTEMTIME, wMinute)*/, 4 /*DT_WORD*/);
lpWriteTime.wSecond=AkelPad.MemRead(lpSystemTime + 12 /*offsetof(SYSTEMTIME, wSecond)*/, 4 /*DT_WORD*/);
lpWriteTime.wMilliseconds=AkelPad.MemRead(lpSystemTime + 14 /*offsetof(SYSTEMTIME, wMilliseconds)*/, 4 /*DT_WORD*/);
if (bStop=LocateCallback(pDir, pFileName, dwAttributes, nSize, lpWriteTime))
break;
}
}
while (oSys.Call("kernel32::FindNextFile" + _TCHAR, hSearch, lpFindData));
oSys.Call("kernel32::FindClose", hSearch);
}
//Go to subdirectory
if (!bStop && bSubDir)
{
if ((hSearch=oSys.Call("kernel32::FindFirstFile" + _TCHAR, pDir + "\\" + "*.*", lpFindData)) != -1 /*INVALID_HANDLE_VALUE*/)
{
do
{
pFileName=AkelPad.MemRead(lpFindData + 44 /*offsetof(WIN32_FIND_DATAW, cFileName)*/, _TSTR);
if (pFileName == "." || pFileName == "..") continue;
dwAttributes=AkelPad.MemRead(lpFindData /*offsetof(WIN32_FIND_DATAW, dwAttributes)*/, 3 /*DT_DWORD*/);
if (dwAttributes & 0x10 /*FILE_ATTRIBUTE_DIRECTORY*/)
{
if (bSubDir)
{
//Recursive call
if (bStop=Locate(pDir + "\\" + pFileName + "\\" + pWildcard, true))
break;
}
}
}
while (oSys.Call("kernel32::FindNextFile" + _TCHAR, hSearch, lpFindData));
oSys.Call("kernel32::FindClose", hSearch);
}
}
}
AkelPad.MemFree(lpFindData);
AkelPad.MemFree(lpLocalFileTime);
AkelPad.MemFree(lpSystemTime);
return bStop;
}
function LocateCallback(pDir, pFileName, dwAttributes, nSize, lpWriteTime)
{
DoFile(pDir + "\\" + pFileName, pSaveDir);
//WScript.Echo("Name:" + pDir + "\\" + pFileName + "\n" +
// "Attr:" + dwAttributes + "\n" +
// "Size:" + nSize + "\n" +
// "WriteTime:" + lpWriteTime.wYear + "." + lpWriteTime.wMonth + "." + lpWriteTime.wDay + " " +
// lpWriteTime.wHour + ":" + lpWriteTime.wMinute + ":" + lpWriteTime.wSecond + " " +
// lpWriteTime.wMilliseconds + "ms, DayOfWeek:" + lpWriteTime.wDayOfWeek);
//Stop?
return false;
}
function DoFile(pOpenFile, pSaveFile)
{
var nOpenResult;
var dwOpenFlags=0x1 /*OD_ADT_BINARY_ERROR*/;
if (nOpenCodepage == -1)
dwOpenFlags|=0x4 /*OD_ADT_DETECT_CODEPAGE*/;
if (nOpenBOM == -1)
dwOpenFlags|=0x8 /*OD_ADT_DETECT_BOM*/;
if (!(nOpenResult=AkelPad.OpenFile(pOpenFile, dwOpenFlags, nOpenCodepage, nOpenBOM)))
{
if (nSaveCodepage != -1 || nSaveBOM != -1)
{
if ((nSaveCodepage != -1 && AkelPad.GetEditCodePage(0) != nSaveCodepage) ||
(nSaveBOM != -1 && AkelPad.GetEditBOM(0) != nSaveBOM))
{
if (!pSaveFile)
pSaveFile=pOpenFile;
else if (oSys.Call("kernel32::GetFileAttributes" + _TCHAR, pSaveFile) & 0x10 /*FILE_ATTRIBUTE_DIRECTORY*/)
pSaveFile=pSaveFile + "\\" + GetFileName(pOpenFile);
if (!AkelPad.SaveFile(0, pSaveFile, nSaveCodepage, nSaveBOM))
++nDoneFiles;
else
++nErrors;
}
AkelPad.Command(4324 /*IDM_WINDOW_FILECLOSE*/);
}
}
else if (nOpenResult != -20 /*EOD_MSGNO*/)
{
++nErrors;
}
++nAllFiles;
}
function GetFileName(pFile)
{
var nOffset;
if ((nOffset=pFile.lastIndexOf("\\")) != -1)
pFile=pFile.substr(nOffset);
return pFile;
}
|
Last edited by Instructor on Thu Feb 07, 2013 9:33 am; edited 3 times in total |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1433
|
Posted: Thu Apr 28, 2011 5:20 pm Post subject: |
|
|
unixTime.js | Code: | // http://akelpad.sourceforge.net/forum/viewtopic.php?p=12600#12600
// http://infocatcher.ucoz.net/js/akelpad_scripts/unixTime.js
// (c) Infocatcher 2011-2012
// version 0.1.3 - 2012-12-03
var TU_AUTO = 0;
var TU_S = 1;
var TU_MS = 2;
var treatAsUTC = getArg("treatAsUTC", true);
var timeUnit = getArg("timeUnit", TU_AUTO);
var date = AkelPad.GetSelText().replace(/^\s+|\s+$/g, "");
if(/^(\d+|0x[0-9a-f]+)$/i.test(date)) {
date = Number(date);
if(timeUnit == TU_S || timeUnit == TU_AUTO && date < 3e9)
date *= 1000;
}
else if(/^([0-3]?\d)\D([01]?\d)\D(\d{4})(\s+([0-2]?\d)\D([0-6]?\d)(\D([0-6]?\d))?)?$/.test(date)) {
// dd.MM.yyyy[ HH:mm[:ss]]
with(RegExp)
date = new Date($3, $2 - 1, $1, $5, $6, $8);
}
else if(/^(\d{4})\D([01]?\d)\D([0-3]?\d)(\s+([0-2]?\d)\D([0-6]?\d)(\D([0-6]?\d))?)?$/.test(date)) {
// yyyy.MM.dd[ HH:mm[:ss]]
with(RegExp)
date = new Date($1, $2 - 1, $3, $5, $6, $8);
}
else if(/^([0-2]?\d)\D([0-6]?\d)(\D([0-6]?\d))?\s+([0-3]?\d)\D([01]?\d)\D(\d{4})$/.test(date)) {
// HH:mm[:ss] dd.MM.yyyy
with(RegExp)
date = new Date($7, $6 - 1, $5, $1, $2, $4);
}
if(!(date instanceof Date))
date = new Date(date);
else if(treatAsUTC) {
var tzo = date.getTimezoneOffset();
date.setMinutes(date.getMinutes() - tzo);
}
var tzo = date.getTimezoneOffset();
var ms = date.getTime();
var s = Math.round(ms/1000);
var tf = function(funcName) {
if(treatAsUTC)
return funcName.substr(0, 3) + "UTC" + funcName.substr(3);
return funcName;
};
var dates = [
date.toLocaleString(),
date[tf("getFullYear")]() + "-" + padLeft(date[tf("getMonth")]() + 1) + "-" + padLeft(date[tf("getDate")]()) + " "
+ padLeft(date[tf("getHours")]()) + ":" + padLeft(date[tf("getMinutes")]()) + ":" + padLeft(date[tf("getSeconds")]())
+ " UTC" + (treatAsUTC ? "" : getTimezone(tzo)),
date.toUTCString(),
date.toString(),
ms,
s,
(s < 0 ? "-" : "") + "0x" + Math.abs(s).toString(16)
].join("\n");
AkelPad.MessageBox(AkelPad.GetMainWnd(), dates, WScript.ScriptName, 64 /*MB_ICONINFORMATION*/);
function padLeft(n) {
var chr = "0";
var cnt = 2;
n = String(n);
var l = n.length;
return l < cnt
? new Array(cnt - n.length + 1).join(chr) + n
: n;
}
function getTimezone(tzo) {
var m = Math.abs(tzo);
var h = Math.floor(m/60);
m = Math.floor(m - h*60);
return (tzo > 0 ? "-" : "+") + padLeft(h) + padLeft(m);
}
function getArg(argName, defaultVal) {
var args = {};
for(var i = 0, argsCount = WScript.Arguments.length; i < argsCount; i++)
if(/^[-\/](\w+)(=(.+))?$/i.test(WScript.Arguments(i)))
args[RegExp.$1.toLowerCase()] = RegExp.$3 ? eval(RegExp.$3) : true;
getArg = function(argName, defaultVal) {
argName = argName.toLowerCase();
return typeof args[argName] == "undefined" // argName in args
? defaultVal
: args[argName];
};
return getArg(argName, defaultVal);
} |
<download>
Convert Unix time.
Screenshot
Last edited by Infocatcher on Mon Dec 03, 2012 7:06 am; edited 2 times in total |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Êèåâ, Ðóñü
|
Posted: Fri Apr 29, 2011 12:24 pm Post subject: |
|
|
TranslateWithGoogleAPI.js
| Code: | ///Translates selected text using the Google API
///Ïåðåâîä òåêñòà èñïîëüçóÿ Google-API
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=12612#12612
// Version: 2.6 (2012.09.11)
//
// -"Translate: Auto -> Ru (Google)" Call("Scripts::Main", 1, "TranslateWithGoogleAPI.js", `-lngT="ru" -Msg=1`) - autodetect source language + display the result in MessageBox
// -"Ïåðåâåñòè: Ru -> En (Google)" Call("Scripts::Main", 1, "TranslateWithGoogleAPI.js", `-lngS="ru" -lngT="en"`) - translate ru -> en + source text is replaced by the translation
var resultText; //â ýòó ïåðåìåííóþ âîçâðàùàåòñÿ ðåçóëüòàò â âèäå òåêñòà, èíà÷å undefined
var vn_resultObject = "resultObject";
var langSource = AkelPad.GetArgValue("lngS", "auto"); //autodetect source language
var langTarget = AkelPad.GetArgValue("lngT", "ru"); //target language [ru]
var nMsgBox = AkelPad.GetArgValue("Msg", 0); //show the result in MessageBox: [0] / 1
//resType values in arguments (does not make sense with Msg=1):
//0 - selected text is replaced by the translation
//1 - copy to clipboard
//2 - display the result in new tab
//3 - output to Log-plugin console
var nResultType = AkelPad.GetArgValue("resType", 0);
var req = createRequestObject();
if (req)
{
var selection;
if (selection = AkelPad.GetSelText(2 /*\n*/))
selection = selection.replace(/\n/g, "<n>"); //äëÿ ñîõðàíåíèÿ ïåðåâîäîâ ñòðîê
selection = encodeURIComponent(selection);
var url = "http://translate.google.com/translate_a/t?";
var params = "client=qlt&langpair=" + langSource + "|" + langTarget + "&q=" + selection + "&callback=" + vn_resultObject;
req.open("POST", url, false);
req.onreadystatechange = processReqChange;
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(params);
if (resultText)
{
var nResultAction;
if (nMsgBox == 1)
{
if (resultText != selection)
{
nResultAction = AkelPad.MessageBox(AkelPad.GetEditWnd(), "Result text:" + "\r\r" + resultText + "\r\r" + "Yes - replace selected (source) text" + "\r" + "No - copy to clipboard", WScript.ScriptName, 32 + 3);
if (nResultAction == 2) WScript.Quit();
}
else
{
AkelPad.MessageBox(AkelPad.GetEditWnd(), "Translation for '" + selection + "' is missing.", WScript.ScriptName, 64);
WScript.Quit();
}
}
else
{
switch (nResultType)
{
case 2:
AkelPad.Command(4101);
break;
case 3:
AkelPad.Call("Log::Output", 5, resultText + "\r");
WScript.Quit();
}
nResultAction = nResultType + 6;
}
switch (nResultAction)
{
case 6:
AkelPad.ReplaceSel(resultText, true);
break;
default:
AkelPad.SetClipboardText(resultText);
break;
}
}
}
function createRequestObject()
{
if (typeof(XMLHttpRequest) === 'undefined')
{
XMLHttpRequest = function()
{
// try { return new ActiveXObject("WinHttp.WinHttpRequest.5.1"); } //Âûøå ãåíåðèðóåòñÿ îøèáêà "Îáúåêò íå ïîääåðæèâàåò ñâîéñòâî èëè ìåòîä"
// catch(e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP"); }
catch(e) {}
try { return new ActiveXObject("Microsoft.XMLHTTP"); }
catch(e) {}
throw new Error("Your system does not support XMLHttpRequest.");
};
}
return new XMLHttpRequest();
}
function processReqChange()
{
try
{
//òîëüêî ïðè ñîñòîÿíèè "complete"
if (req.readyState == 4)
{
//äëÿ ñòàòóñà "OK"
if (req.status == 200)
{
//îáðàáîòêà îòâåòà
var tmpText = (req.responseText.indexOf(vn_resultObject) != -1) ? req.responseText.replace(vn_resultObject, "var " + vn_resultObject + " = ") : "var " + vn_resultObject + " = " + req.responseText;
// WScript.Echo(tmpText); //test message
eval(tmpText);
if (!resultObject.sentences)
{
if (resultObject.error)
showErrorMessage(resultObject.error.message + " (" + resultObject.error.code + ")", true);
else
showErrorMessage("There is no error output object, possibly changed API format.", true);
}
else
{
resultText = resultObject.sentences[0].trans;
for (var i = 1; i < resultObject.sentences.length; ++i)
resultText += resultObject.sentences[i].trans;
}
resultText = resultText.replace(/ {0,1}<n> {0,1}/g, "\n"); //âîññòàíîâëåíèå ïåðåâîäîâ ñòðîê
resultText = resultText.replace(/&/gm, '&');
resultText = resultText.replace(/</gm, '<');
resultText = resultText.replace(/>/gm, '>');
resultText = resultText.replace(/"/gm, '"');
}
else
showErrorMessage("Unable to retrieve data (" + req.statusText + ")!", true);
}
}
catch( e )
{ showErrorMessage("Error: " + e, true); }
}
function showErrorMessage(pText, bQuit)
{
AkelPad.MessageBox(AkelPad.GetEditWnd(), pText, WScript.ScriptName, 16);
if (bQuit) WScript.Quit();
} |
Last edited by VladSh on Tue Sep 11, 2012 3:22 pm; edited 10 times in total |
|
| Back to top |
|
 |
KDJ
Joined: 06 Mar 2010 Posts: 1068 Location: Poland
|
Posted: Fri May 13, 2011 5:07 am Post subject: |
|
|
Translates text via Google and MS Bing.
Script moved to another location.
Translator.js
Last edited by KDJ on Sun Jan 08, 2012 3:42 pm; edited 6 times in total |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1433
|
Posted: Sat May 14, 2011 5:56 pm Post subject: |
|
|
crypt.js <download>
Improved version of AESCrypt.js.
Encrypt/decrypt text using AES-256 or/and Blowfish.
It can be very slow, be careful.
Screenshots
Post size limit, here is packed file:
crypt.uue | Code: | begin 644 crypt.7z
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
M&0H)0%;Z:!J`.A-A%#L(BI2,Y`!$U5*K2KD@M�I9^O"+K[NTP[W:Y[DDZ9
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
M">F[M^U+(57.7K9Z)0J`O%3UW_/+Z9W++J?-AU^$.Q@ACN^HBTE3BZM/QW
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
?`"X`:@!S````%`H!```<C=HW+\T!%08!`"``````````
`
end
sum -r/size 35803/25051
|
Save as text file with .uue extension, unpack with Total Commander or WinRAR. And unpack .7z with WinRAR or 7-Zip.
Last edited by Infocatcher on Fri May 11, 2012 5:58 pm; edited 3 times in total |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2510 Location: Êèåâ, Ðóñü
|
Posted: Thu May 19, 2011 9:24 am Post subject: |
|
|
OpenSessionsDir.js
| Code: | ///Opens the directory where the files are stored sessions
///Îòêðûâàåò ïàïêó, â êîòîðîé ñîõðàíÿþòñÿ ôàéëû ñåññèé
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=12937#12937
// Version: 1.2 (2011.10.20)
//
// -"Directory of sessions" Call("Scripts::Main", 1, "OpenSessionsDir.js")
if (! AkelPad.Include("Settings.js")) WScript.Quit();
var nSubDir = 4;
var pAkelPlugsDir = AkelPad.GetAkelDir(nSubDir) /*ADTYPE_PLUGS*/ + "\\";
var pPluginFileName = "Sessions";
var pParameterName = "SaveSessions";
nParameterValue = SettingsRead(nSubDir, pPluginFileName, pParameterName, 3 /*PO_STRING*/)
var WshShell = new ActiveXObject("WScript.Shell");
var pPluginDataDir; //ïàïêà, êîòîðóþ ìû ñîáñòâåííî è áóäåì îòêðûâàòü
switch (nParameterValue)
{
case "1": //Äèððåêòîðèÿ ïðîãðàììû
pPluginDataDir = pAkelPlugsDir + pPluginFileName;
break;
case "2": //Äèððåêòîðèÿ ïîëüçîâàòåëÿ
pPluginDataDir = WshShell.ExpandEnvironmentStrings("%APPDATA%\\AkelPad\\" + pPluginFileName);
break;
default:
AkelPad.MessageBox(AkelPad.GetEditWnd(), "Unhandled value of parameter " + pParameterName + "=" + nParameterValue + "!", WScript.ScriptName, 48);
WScript.Quit();
}
var fso = new ActiveXObject("Scripting.FileSystemObject");
if (fso.FolderExists(pPluginDataDir) == false)
{
AkelPad.MessageBox(AkelPad.GetEditWnd(), "Directory of sessions '" + pPluginDataDir + "' not found!'", WScript.ScriptName, 48);
WScript.Quit();
}
var nResult = -1;
if (fso.FileExists(pAkelPlugsDir + "Explorer.dll") == true) //ïûòàåìñÿ ñíà÷àëà îòêðûòü â Explorer-ïëàãèíå
nResult = AkelPad.Call("Explorer::Main", 1, pPluginDataDir);
if (nResult == -1)
WshShell.Exec('rundll32.exe shell32, ShellExec_RunDLL "' + pPluginDataDir + '"');
|
N.B.: Â êîäå èñïîëüçóåòñÿ Settings.js.
Last edited by VladSh on Thu Oct 20, 2011 9:39 am; edited 3 times in total |
|
| Back to top |
|
 |
oyaebu
Joined: 11 Oct 2009 Posts: 15
|
Posted: Fri May 20, 2011 7:43 am Post subject: |
|
|
Çàìåíÿåò âûäåëåíèå åãî õåøåì.
md5sel.js | Code: | function utf8_encode ( str_data ) { // Encodes an ISO-8859-1 string to UTF-8
//
// + original by: Webtoolkit.info (http://www.webtoolkit.info/)
str_data = str_data.replace(/\r\n/g,"\n");
var utftext = "";
for (var n = 0; n < str_data.length; n++) {
var c = str_data.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
} else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
} else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
}
function md5 ( str ) { // Calculate the md5 hash of a string
//
// + original by: Webtoolkit.info (http://www.webtoolkit.info/)
// + namespaced by: Michael White (http://crestidg.com)
var RotateLeft = function(lValue, iShiftBits) {
return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
};
var AddUnsigned = function(lX,lY) {
var lX4,lY4,lX8,lY8,lResult;
lX8 = (lX & 0x80000000);
lY8 = (lY & 0x80000000);
lX4 = (lX & 0x40000000);
lY4 = (lY & 0x40000000);
lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
if (lX4 & lY4) {
return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
}
if (lX4 | lY4) {
if (lResult & 0x40000000) {
return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
} else {
return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
}
} else {
return (lResult ^ lX8 ^ lY8);
}
};
var F = function(x,y,z) { return (x & y) | ((~x) & z); };
var G = function(x,y,z) { return (x & z) | (y & (~z)); };
var H = function(x,y,z) { return (x ^ y ^ z); };
var I = function(x,y,z) { return (y ^ (x | (~z))); };
var FF = function(a,b,c,d,x,s,ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
};
var GG = function(a,b,c,d,x,s,ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
};
var HH = function(a,b,c,d,x,s,ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
};
var II = function(a,b,c,d,x,s,ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
};
var ConvertToWordArray = function(str) {
var lWordCount;
var lMessageLength = str.length;
var lNumberOfWords_temp1=lMessageLength + 8;
var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
var lWordArray=Array(lNumberOfWords-1);
var lBytePosition = 0;
var lByteCount = 0;
while ( lByteCount < lMessageLength ) {
lWordCount = (lByteCount-(lByteCount % 4))/4;
lBytePosition = (lByteCount % 4)*8;
lWordArray[lWordCount] = (lWordArray[lWordCount] | (str.charCodeAt(lByteCount)<<lBytePosition));
lByteCount++;
}
lWordCount = (lByteCount-(lByteCount % 4))/4;
lBytePosition = (lByteCount % 4)*8;
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
lWordArray[lNumberOfWords-2] = lMessageLength<<3;
lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
return lWordArray;
};
var WordToHex = function(lValue) {
var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
for (lCount = 0;lCount<=3;lCount++) {
lByte = (lValue>>>(lCount*8)) & 255;
WordToHexValue_temp = "0" + lByte.toString(16);
WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
}
return WordToHexValue;
};
var x=Array();
var k,AA,BB,CC,DD,a,b,c,d;
var S11=7, S12=12, S13=17, S14=22;
var S21=5, S22=9 , S23=14, S24=20;
var S31=4, S32=11, S33=16, S34=23;
var S41=6, S42=10, S43=15, S44=21;
str = utf8_encode(str);
x = ConvertToWordArray(str);
a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
for (k=0;k<x.length;k+=16) {
AA=a; BB=b; CC=c; DD=d;
a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
d=GG(d,a,b,c,x[k+10],S22,0x2441453);
c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
a=II(a,b,c,d,x[k+0], S41,0xF4292244);
d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
c=II(c,d,a,b,x[k+6], S43,0xA3014314);
b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
a=AddUnsigned(a,AA);
b=AddUnsigned(b,BB);
c=AddUnsigned(c,CC);
d=AddUnsigned(d,DD);
}
var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);
return temp.toLowerCase();
}
AkelPad.ReplaceSel(md5(AkelPad.GetSelText())); |
|
|
| Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 726 Location: Kyiv, Ukraine
|
Posted: Wed May 25, 2011 9:19 am Post subject: |
|
|
Ñóðîâûé ñêðèïò íà òåìó òîãî, êàê ÿ âèæó çàïóñê ôàéëîâ èç AkelPad (âêëþ÷àÿ êîìïèëÿöèþ).
My vision of running a file from within AkelPad (including compiling).
RunMe.js | Code: | /**********************************************************************
* RunMe.js v.2.0 *
* (C) DV, Dec 2012 *
**********************************************************************/
/*
* Simple usage:
* Call("Scripts::Main", 1, "RunMe.js")
* To specify command line manually:
* Call("Scripts::Main", 1, "RunMe.js", "1")
*
* Format of 'oCommands':
* var oCommands = {
* "extensions-1" :
* "command-1" ,
* "extensions-2" :
* "command-2" ,
* ...
* };
* where 'extensions' are space-separated extensions e.g. "cpp cxx hxx"
* and 'command' is a command to be executed.
* You can use empty command ("") to do nothing.
* You can use empty extension ("") in the end of 'oCommands' to match
* any file extension which was not matched by previous items.
*
* The command may include:
* %a - AkelPad directory: "C:\Program Files\AkelPad"
* %d - file directory: "C:", "C:\Program Files"
* %e - file extension: "txt", "js"
* %f - file full pathname: "C:\File.txt"
* %n - file name: "File"
*
* If a command is started with ':', this command should contain a name
* of internal function to be executed. For example:
* var oCommands = {
* ...
* "js" :
* ":run_js(\"%n.%e\")" ,
* ...
* };
* function run_js(fileName)
* {
* AkelPad.Call("Scripts::Main", 1, fileName);
* }
*
* Note:
* When using a compiler or an interpreter, you can specify a command
* in a form of "cmd /c your-command-here || pause".
* This makes the console window remain in case of error from the
* compiler/interpreter.
*
**********************************************************************/
// user-defined set of file extensions and commands
var oCommands = {
"ini txt nfo coder" :
"" /* do nothing */ ,
"js" :
":run_js(\"%d\", \"%n.%e\")" ,
"c" :
"cmd /c C:\\tools\\tcc\\tcc.exe -luser32 -run \"%f\" || pause" ,
"cpp cc cxx hxx hpp hh h" :
":run_cpp(\"%f\")" ,
"awk" :
"cmd /c C:\\tools\\gawk\\gawk.exe -f \"%f\" || pause" ,
"nsi nsis" :
":run_nsis(\"%f\")" ,
"py" :
"cmd /c python \"%f\" || pause" ,
"pas pp" :
":run_pas(\"%f\")" ,
/* Place new commands _before_ this line !!! */
"" /* apply to any remained extension */ :
":run_anyfile(\"%f\")"
};
// user-defined functions
function run_js(fileDir, fileName)
{
if (fileDir.toUpperCase() == getAkelPadDir(5).toUpperCase())
{
// script is under AkelPad's Scripts directory
AkelPad.Call("Scripts::Main", 1, fileName);
}
else
{
// call default js interpreter
runCommand("\"" + fileDir + "\\" + fileName + "\"", "", 0); // do not capture output
}
}
function run_pas(filePathName)
{
var sPath = envGetVar("PATH");
var sPathNew = sPath + ";C:\\FPC\\2.6.0\\bin\\i386-win32";
envSetVar("PATH", sPathNew); // adding path to fpc.exe
var cmd1 = "fpc.exe \"%f\""; // compile
var cmd2 = "\"%n.exe\""; // run the .exe in Log::Output
// var cmd2 = "rundll32.exe shell32,ShellExec_RunDLL \"%n.exe\""; // run the .exe
var cmd = "cmd /c " + cmd1 + " && " + cmd2;
cmd = prepareCommand(cmd, filePathName); // pre-process %f, %n etc.
setCurrentDir(getFileDir(filePathName));
runCommand(cmd); // run
envSetVar("PATH", sPath); // restoring original PATH
}
function run_cpp(filePathName)
{
var useMinGW = false;
if (useMinGW)
{
/* MinGW G++ */
var compilerExe = "C:\\MinGW\\bin\\g++.exe";
var compilerDir = getFileDir(compilerExe);
// cmd1: compile the source file (object file is created)
var cmd1 = compilerExe + " -c \"%f\" -o \"%d\\%n.o\"";
// cmd2: create the executable (from the object file)
var cmd2 = compilerExe + " \"%d\\%n.o\" -o \"%d\\%n.exe\"";
// cmd3: run the executable
var cmd3 = "\"%d\\%n.exe\"";
// cmd: the whole command line
var cmd = "cmd /c " + cmd1 + " && " + cmd2 + " && " + cmd3 + " || pause";
cmd = prepareCommand(cmd, filePathName);
//WScript.Echo(cmd);
runCommand(cmd, compilerDir);
}
else
{
/* Visual Studio 9 (2008) */
var sProgramFiles = envGetVar("ProgramFiles");
var sProgramFilesx86 = envGetVar("ProgramFiles(x86)");
if (sProgramFilesx86.length == 0)
sProgramFilesx86 = sProgramFiles;
else
sProgramFiles = sProgramFilesx86.substr(0, sProgramFilesx86.length - 6);
var sVcDir = sProgramFilesx86 + "\\Microsoft Visual Studio 9.0\\VC";
var sVsCommon = sProgramFilesx86 + "\\Microsoft Visual Studio 9.0\\Common7\\IDE";
var sMsSDK = sProgramFiles + "\\Microsoft SDKs\\Windows\\v6.0A";
// update PATH environment variable...
var sPath = envGetVar("PATH");
var sPathNew = sVcDir + "\\bin;" + sMsSDK + "\\bin;" + sVsCommon + ";" + sPath;
envSetVar("PATH", sPathNew); //WScript.Echo(envGetVar("PATH"));
// update INLUDE environment variable...
var sInclude = envGetVar("INCLUDE");
var sIncludeNew = sMsSDK + "\\include;" + sVcDir + "\\include;" + sInclude;
envSetVar("INCLUDE", sIncludeNew); //WScript.Echo(envGetVar("INCLUDE"));
// update LIB environment variable...
var sLib = envGetVar("LIB");
var sLibNew = sMsSDK + "\\lib;" + sVcDir + "\\lib;" + sLib;
envSetVar("LIB", sLibNew); //WScript.Echo(envGetVar("LIB"));
// compile...
var fileDir = getFileDir(filePathName);
var cmd1 = "cl /O1 \"%f\" /link kernel32.lib user32.lib comctl32.lib gdi32.lib Advapi32.lib ole32.lib Oleaut32.lib";
var cmd2 = "\"%d\\%n.exe\"";
var cmd = "cmd /c " + cmd1 + " && " + cmd2 + " || pause";
cmd = prepareCommand(cmd, filePathName);
//WScript.Echo(cmd);
runCommand(cmd, fileDir);
// restore original environment variables...
envSetVar("PATH", sPath);
envSetVar("INCLUDE", sInclude);
envSetVar("LIB", sLib);
}
}
function run_nsis(filePathName)
{
var sProgramFiles = getProgramFilesDir("x86");
var cmd = "\"" + sProgramFiles + "\\NSIS\\makensisw.exe\" \"" + filePathName + "\"";
runCommand(cmd, "", 0); // do not capture output
}
function run_anyfile(filePathName)
{
var cmd = "rundll32.exe shell32,ShellExec_RunDLL \"" + filePathName + "\"";
runCommand(cmd, "", 0); // do not capture output
}
///////////////////////////////////////////////////////////////////////
// script engine, do not modify...
AkelPad.ScriptNoMutex(4 /*ULT_LOCKMULTICOPY*/ );
if (!selfTest())
{
WScript.Quit();
}
var oSys = undefined;
var filePathName = AkelPad.GetEditFile(0);
if (filePathName.toUpperCase() == WScript.ScriptFullName.toUpperCase())
{
WScript.Echo("Don\'t want to execute self :)");
WScript.Quit();
}
var isModified = AkelPad.GetEditModified(0);
RunFile(filePathName, isModified);
function RunFile(filePathName, isModified)
{
var fileExt = getFileExt(filePathName).toLowerCase();
if (fileExt.length > 0)
{
var isProcessed = false;
for (var ext in oCommands)
{
ext = ext.toLowerCase();
if (ext.length == 0 || isOneOf(fileExt, ext))
{
var cmd = oCommands[ext];
if (cmd.length > 0)
{
if (isModified)
AkelPad.Command(4105); // save file
if (WScript.Arguments.length > 0)
{
if (WScript.Arguments(0) == "1")
{
var oSettings;
var cmd1;
var cmd2;
cmd1 = undefined;
oSettings = AkelPad.ScriptSettings();
if (oSettings.Begin(WScript.ScriptBaseName, 0x1 /*POB_READ*/))
{
cmd1 = oSettings.Read(ext, 3 /*PO_STRING*/);
oSettings.End();
}
if ((cmd1 == undefined) || (cmd1 == ""))
{
cmd1 = cmd;
}
cmd2 = AkelPad.InputBox(AkelPad.GetMainWnd(), WScript.ScriptName, "command:", cmd1);
if (cmd2 == undefined)
WScript.Quit();
if (cmd2 != cmd1)
{
if (oSettings.Begin(WScript.ScriptBaseName, 0x2 /*POB_SAVE*/))
{
oSettings.Write(ext, 3 /*PO_STRING*/, cmd2);
oSettings.End();
}
}
if (cmd2 == "")
WScript.Quit();
cmd = cmd2;
}
}
cmd = prepareCommand(cmd, filePathName);
if (cmd.charAt(0) == ':')
{
cmd = cmd.replace(/\\/g, "\\\\");
eval(cmd.substr(1));
}
else
{
runCommand(cmd, "");
}
}
isProcessed = true;
break;
}
}
if (!isProcessed)
WScript.Echo("No matched extension found!");
}
else
WScript.Echo("File extension is empty!");
}
function envGetVar(varName)
{
var varValue = "";
var lpBuffer;
if (lpBuffer = AkelPad.MemAlloc(8192*_TSIZE))
{
if (oSys == undefined)
oSys = AkelPad.SystemFunction();
oSys.Call("kernel32::GetEnvironmentVariable" + _TCHAR, varName, lpBuffer, 8192);
varValue = AkelPad.MemRead(lpBuffer, _TSTR);
AkelPad.MemFree(lpBuffer);
}
return varValue;
}
function envSetVar(varName, varValue)
{
if (oSys == undefined)
oSys = AkelPad.SystemFunction();
oSys.Call("kernel32::SetEnvironmentVariable" + _TCHAR, varName, varValue);
}
function getCurrentDir()
{
var dir = "";
var lpBuffer;
if (lpBuffer = AkelPad.MemAlloc(8192*_TSIZE))
{
if (oSys == undefined)
oSys = AkelPad.SystemFunction();
oSys.Call("kernel32::GetCurrentDirectory" + _TCHAR, 8192, lpBuffer);
dir = AkelPad.MemRead(lpBuffer, _TSTR);
AkelPad.MemFree(lpBuffer);
}
return dir;
}
function setCurrentDir(dir)
{
if (oSys == undefined)
oSys = AkelPad.SystemFunction();
oSys.Call("kernel32::SetCurrentDirectory" + _TCHAR, dir);
}
function getProgramFilesDir(bits)
{
var sProgramFiles = envGetVar("ProgramFiles");
var sProgramFilesx86 = envGetVar("ProgramFiles(x86)");
if (sProgramFilesx86.length == 0)
sProgramFilesx86 = sProgramFiles;
else if (sProgramFiles.length == 0)
sProgramFiles = sProgramFilesx86.substr(0, sProgramFilesx86.length - 6);
if (bits == undefined || bits != 32 || bits != "x86")
return sProgramFiles;
else
return sProgramFilesx86;
}
function getAkelPadDir(adtype)
{
var s = AkelPad.GetAkelDir(adtype);
return s;
}
function getFileExt(filePathName) // file extension w/o leading '.'
{
var n = filePathName.lastIndexOf(".");
return (n >= 0) ? filePathName.substr(n + 1) : "";
}
function getFileName(filePathName) // file name w/o extension
{
var n2 = filePathName.lastIndexOf(".");
var n1 = filePathName.lastIndexOf("\\");
var nn = filePathName.lastIndexOf("/");
if (nn > n1) n1 = nn;
var s = "";
if (n1 < 0 && n2 < 0)
s = filePathName;
else if (n1 < 0)
s = filePathName.substr(0, n2);
else if (n2 < 0)
s = filePathName.substr(n1 + 1);
else if (n2 > n1)
s = filePathName.substr(n1 + 1, n2 - n1 - 1);
return s;
}
function getFileDir(filePathName) // file directory w/o trailing '\'
{
var n = filePathName.lastIndexOf("\\");
var nn = filePathName.lastIndexOf("/");
if (nn > n) n = nn;
return (n >= 0) ? filePathName.substr(0, n) : filePathName;
}
function isOneOf(s, t) // t includes s
{
var s1 = " " + s + " ";
var t1 = " " + t + " ";
return (t1.indexOf(s1) >= 0);
}
function prepareCommand(cmd, filePathName)
{
if (cmd.indexOf("%a") >= 0)
{
cmd = cmd.replace(/%a/g, getAkelPadDir(0));
}
if (cmd.indexOf("%d") >= 0)
{
cmd = cmd.replace(/%d/g, getFileDir(filePathName));
}
if (cmd.indexOf("%e") >= 0)
{
cmd = cmd.replace(/%e/g, getFileExt(filePathName));
}
if (cmd.indexOf("%f") >= 0)
{
cmd = cmd.replace(/%f/g, filePathName);
}
if (cmd.indexOf("%n") >= 0)
{
cmd = cmd.replace(/%n/g, getFileName(filePathName));
}
return cmd;
}
function runCommand(cmd, dir, captureOutput)
{
if (captureOutput == undefined || captureOutput != 0)
{
// by default, capture output
if (/[ ]*\|\|[ ]*pause[ ]*$/.test(cmd))
{
// exclude trailing "|| pause" from 'cmd' if present
var n = cmd.lastIndexOf("||");
cmd = cmd.substr(0, n);
}
runLogOutputCmd(cmd, dir);
}
else
{
if (dir == undefined || dir == "")
{
var WshShell = new ActiveXObject("WScript.Shell");
try
{
WshShell.Run(cmd, 1, false);
}
catch (error)
{
var hMainWnd = AkelPad.GetMainWnd();
var s = "Failed to execute:\n " + cmd;
AkelPad.MessageBox(hMainWnd, s, WScript.ScriptName, 48 /*MB_ICONEXCLAMATION*/);
}
}
else
{
AkelPad.Exec(cmd, dir);
}
}
}
function runLogOutputCmd(cmd, dir)
{
var lpState;
// the command (child process) is about to be run...
AkelPad.Call("Log::Output", 1, cmd, dir);
// wait until the child process will actually be started...
lpState = AkelPad.MemAlloc(4 /*sizeof(DWORD)*/);
if (lpState)
{
var nState = -1;
while (nState != 0 && nState < 4)
{
AkelPad.Call("Log::Output", 3, lpState);
nState = AkelPad.MemRead(lpState, 3 /*DT_DWORD*/);
//AkelPad.Call("Log::Output", 5, "State: " + dwState + "\n");
WScript.Sleep(200);
}
AkelPad.MemFree(lpState);
}
else
{
// wait to be sure the process has been started
WScript.Sleep(2000);
}
}
function selfTest()
{
if (oCommands == undefined)
{
WScript.Echo("\'oCommands\' is undefined.\nNothing to do.");
return false;
}
var isEmpty = true;
var hasEmptyExt = false;
for (var ext in oCommands)
{
if (ext == undefined)
{
WScript.Echo("Undefined extension found.\nCan not proceed.");
return false;
}
if (oCommands[ext] == undefined)
{
WScript.Echo("oCommands[\"" + ext + "\"]: command is undefined.\nCan not proceed.");
return false;
}
if (hasEmptyExt)
{
WScript.Echo("Empty extension found while there are more items below.\nEmpty extension matches any remaining file extension, so such item\nshould be the last (otherwise all the further items will be ignored).");
return false;
}
if (ext.length == 0)
{
hasEmptyExt = true;
}
isEmpty = false;
}
if (isEmpty)
{
WScript.Echo("\'oCommands\' is empty.\nNothing to do.");
return false;
}
return true;
}
|
×òîáû âûÿñíèòü ïóòè ê Visual C++:
detect_vc.bat
| Code: | @echo off
set PathToProgramFiles=%ProgramFiles%
if "%ProgramFiles(x86)%" == "" (
set PathToProgramFilesx86=%ProgramFiles%
) else (
set PathToProgramFilesx86=%ProgramFiles(x86)%
)
echo.
echo Detecting VC...
for /D %%c in (
"%PathToProgramFilesx86%\Microsoft Visual Studio\VC98",
"%PathToProgramFilesx86%\Microsoft Visual Studio .NET\Vc7",
"%PathToProgramFilesx86%\Microsoft Visual Studio .NET 2003\Vc7",
"%PathToProgramFilesx86%\Microsoft Visual C++ Toolkit 2003",
"%PathToProgramFilesx86%\Microsoft Visual Studio 8\VC",
"%PathToProgramFilesx86%\Microsoft Visual Studio 9.0\VC",
"%PathToProgramFilesx86%\Microsoft Visual Studio 10.0\VC"
) do (
if exist %%c (
if exist "%%~c\bin" (
call :DetectDetails %%c
)
)
)
goto End
:DetectDetails
if "%~1" == "%PathToProgramFilesx86%\Microsoft Visual Studio\VC98" (
if exist "%~1\..\Common\MSDev98" (
echo.
echo * VC6 /1998/ detected:
echo set VCDIR=%~1
echo set VSCOMMON=%%VCDIR%%\..\Common\MSDev98
echo set PATH=%%VCDIR%%\Bin;%%VSCOMMON%%\Bin;%%PATH%%
echo set INCLUDE=%%VCDIR%%\include;%%INCLUDE%%
echo set LIB=%%VCDIR%%\lib;%%LIB%%
)
goto End
)
if "%~1" == "%PathToProgramFilesx86%\Microsoft Visual Studio .NET\Vc7" (
if exist "%~1\PlatformSDK" (
if exist "%~1\atlmfc" (
echo.
echo * VC7.0 /2002/ detected:
echo set VCDIR=%~1
echo set MSSDK=%%VCDIR%%\PlatformSDK
echo set ATLMFC=%%VCDIR%%\atlmfc
echo set PATH=%%VCDIR%%\bin;%%MSSDK%%\bin;%%PATH%%
echo set INCLUDE=%%MSSDK%%\include;%%VCDIR%%\include;%%ATLMFC%%\include;%%INCLUDE%%
echo set LIB=%%MSSDK%%\lib;%%VCDIR%%\lib;%%LIB%%
)
)
goto End
)
if "%~1" == "%PathToProgramFilesx86%\Microsoft Visual Studio .NET 2003\Vc7" (
if exist "%~1\PlatformSDK" (
if exist "%~1\atlmfc" (
echo.
echo * VC7.1 /2003/ detected:
echo set VCDIR=%~1
echo set MSSDK=%%VCDIR%%\PlatformSDK
echo set ATLMFC=%%VCDIR%%\atlmfc
echo set PATH=%%VCDIR%%\bin;%%MSSDK%%\bin;%%PATH%%
echo set INCLUDE=%%MSSDK%%\include;%%VCDIR%%\include;%%ATLMFC%%\include;%%INCLUDE%%
echo set LIB=%%MSSDK%%\lib;%%VCDIR%%\lib;%%LIB%%
)
)
goto End
)
if "%~1" == "%PathToProgramFilesx86%\Microsoft Visual C++ Toolkit 2003" (
echo Microsoft Visual C++ Toolkit 2003 - no info yet...
goto End
)
if exist "%~1\..\Common7\IDE" (
echo.
if "%~1" == "%PathToProgramFilesx86%\Microsoft Visual Studio 8\VC" (
echo * VC8 /2005/ detected:
goto DetectDetails_Proceed
)
if "%~1" == "%PathToProgramFilesx86%\Microsoft Visual Studio 9.0\VC" (
echo * VC9 /2008/ detected:
goto DetectDetails_Proceed
)
if "%~1" == "%PathToProgramFilesx86%\Microsoft Visual Studio 10.0\VC" (
echo * VC10 /2010/ detected:
goto DetectDetails_Proceed
)
:DetectDetails_Proceed
echo set VCDIR=%~1
echo set VSCOMMON=%%VCDIR%%\..\Common7\IDE
if exist "%~1\PlatformSDK" (
echo set MSSDK=%%VCDIR%%\PlatformSDK
)
for /D %%s in (
"%PathToProgramFiles%\Microsoft Platform SDK for Windows Server 2003 R2",
"%PathToProgramFiles%\Microsoft Platform SDK",
"%PathToProgramFiles%\Microsoft SDKs\Windows\v6.0A",
"%PathToProgramFiles%\Microsoft SDKs\Windows\v7.0",
"%PathToProgramFiles%\Microsoft SDKs\Windows\v7.0A"
) do (
if exist %%s (
if exist "%%~s\bin" (
if exist "%%~s\lib" (
if exist "%%~s\include" (
echo set MSSDK=%%~s
)
)
)
)
)
echo set PATH=%%VCDIR%%\bin;%%MSSDK%%\bin;%%VSCOMMON%%;%%PATH%%
echo set INCLUDE=%%MSSDK%%\include;%%VCDIR%%\include;%%INCLUDE%%
echo set LIB=%%MSSDK%%\lib;%%VCDIR%%\lib;%%LIB%%
)
goto End
:End
|
Last edited by DV on Wed Dec 12, 2012 7:18 pm; edited 15 times in total |
|
| Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 4649
|
Posted: Wed May 25, 2011 6:10 pm Post subject: |
|
|
Export highlighted text to HTML or BBCode.
CodePoster.js | Code: | // http://akelpad.sourceforge.net/forum/viewtopic.php?p=13021#13021
// Version v1.9
//
//
//// Export highlighted text to HTML or BBCode.
//
// Arguments:
// -Format="html" -Output highlighting in HTML format (default is "BBCode").
// -Enclose="[code]${result}[/code]" -Enclose result string (default is "<pre>${result}</pre>").
// -XHTML=false -use "<br>" instead of "<br/>" (default is true).
// -Strict=true -use "<span style=" instead of "<font" (default is false).
// -Info=false -Don't add link to CodePoster.js script (default is true).
//
// Usage:
// Call("Scripts::Main", 1, "CodePoster.js", `-Format="BBCode" -Enclose="[code]${result}[/code]"`)
//Arguments
var pFormat=AkelPad.GetArgValue("Format", "BBCode");
var pEnclose=AkelPad.GetArgValue("Enclose", "<pre>${result}</pre>");
var bXHTML=AkelPad.GetArgValue("XHTML", true);
var bStrict=AkelPad.GetArgValue("Strict", false);
var bInfo=AkelPad.GetArgValue("Info", true);
//Variables
var hMainWnd=AkelPad.GetMainWnd();
var hWndEdit=AkelPad.GetEditWnd();
var oSys=AkelPad.SystemFunction();
var dwSystemTextColor=oSys.Call("user32::GetSysColor", 8 /*COLOR_WINDOWTEXT*/);
var lpGH;
var lpCallback;
var pText="";
var pColorBegin;
var pColorEnd;
var lpMemText=0;
var nMemTextBytes;
var bBBCode;
var pScriptURL="";
if (hWndEdit)
{
if (pFormat.toLowerCase() == "html")
bBBCode=false;
else
bBBCode=true;
if (bInfo)
pScriptURL="http://akelpad.sourceforge.net/forum/viewtopic.php?p=13021#13021";
if (lpGH=AkelPad.MemAlloc(_X64?80:40 /*sizeof(AEGETHIGHLIGHT)*/))
{
if (lpCallback=oSys.RegisterCallback("GetHighLightCallback"))
{
AkelPad.MemCopy(lpGH + (_X64?16:8) /*offsetof(AEGETHIGHLIGHT, lpCallback)*/, lpCallback, 2 /*DT_QWORD*/);
AkelPad.MemCopy(lpGH + (_X64?72:36) /*offsetof(AEGETHIGHLIGHT, dwFlags)*/, 0x7 /*AEGHF_NOSELECTION|AEGHF_NOACTIVELINETEXT|AEGHF_NOACTIVELINEBK*/, 3 /*DT_DWORD*/);
if (!AkelPad.SendMessage(hWndEdit, 3123 /*AEM_EXGETSEL*/, lpGH + (_X64?24:12) /*offsetof(AEGETHIGHLIGHT, crText.ciMin)*/, lpGH + (_X64?48:24) /*offsetof(AEGETHIGHLIGHT, crText.ciMax)*/))
{
AkelPad.SendMessage(hWndEdit, 3130 /*AEM_GETINDEX*/, 1 /*AEGI_FIRSTCHAR*/, lpGH + (_X64?24:12) /*offsetof(AEGETHIGHLIGHT, crText.ciMin)*/);
AkelPad.SendMessage(hWndEdit, 3130 /*AEM_GETINDEX*/, 2 /*AEGI_LASTCHAR*/, lpGH + (_X64?48:24) /*offsetof(AEGETHIGHLIGHT, crText.ciMax)*/);
}
//Calculate nMemTextBytes
nMemTextBytes=0;
AkelPad.SendMessage(hWndEdit, 3595 /*AEM_HLGETHIGHLIGHT*/, 0, lpGH);
if (lpMemText=AkelPad.MemAlloc(nMemTextBytes + _TSIZE))
{
//Fill lpMemText
nMemTextBytes=0;
AkelPad.SendMessage(hWndEdit, 3595 /*AEM_HLGETHIGHLIGHT*/, 0, lpGH);
pText=AkelPad.MemRead(lpMemText, _TSTR);
AkelPad.MemFree(lpMemText);
}
oSys.UnregisterCallback(lpCallback);
}
AkelPad.MemFree(lpGH);
}
if (pText)
{
pText=pEnclose.replace(/\$\{result\}/, pText);
if (bInfo)
{
if (bBBCode)
pText+="[color=Purple][size=1]* " + GetLangString(0) + " [URL=" + pScriptURL + "]CodePoster.js[/URL] " + GetLangString(1) + "[/size][/color]\r";
else
{
if (bStrict)
pText+="\r<span style=\"color:Purple; font-size:xx-small;\">* " + GetLangString(0) + " <a href=\"" + pScriptURL + "\">CodePoster.js</a> " + GetLangString(1) + "</span>\r";
else
pText+="\r<font color=\"Purple\" size=\"1\">* " + GetLangString(0) + " <a href=\"" + pScriptURL + "\">CodePoster.js</a> " + GetLangString(1) + "</font>\r";
}
}
AkelPad.SetClipboardText(pText);
AkelPad.MessageBox(hMainWnd, GetLangString(2), WScript.ScriptName, 64 /*MB_ICONINFORMATION*/);
}
}
function GetHighLightCallback(dwCookie, crAkelRange, crRichRange, hlp)
{
var nRangeStart=AkelPad.MemRead(crRichRange + 0 /*offsetof(CHARRANGE64, crRichRange.cpMin)*/, 2 /*DT_QWORD*/);
var nRangeEnd=AkelPad.MemRead(crRichRange + (_X64?8:4) /*offsetof(CHARRANGE64, crRichRange.cpMax)*/, 2 /*DT_QWORD*/);
var pRangeText;
var dwFontStyle=AkelPad.MemRead(hlp + (_X64?16:16) /*offsetof(AEHLPAINT, dwFontStyle)*/, 3 /*DT_DWORD*/);
var dwActiveTextColor=AkelPad.MemRead(hlp + (_X64?8:8) /*offsetof(AEHLPAINT, dwActiveText)*/, 3 /*DT_DWORD*/);
var dwPaintType=AkelPad.MemRead(hlp + (_X64?20:20) /*offsetof(AEHLPAINT, dwPaintType)*/, 3 /*DT_DWORD*/);
if (pRangeText=AkelPad.GetTextRange(nRangeStart, nRangeEnd))
{
if (!bBBCode)
{
//pRangeText=pRangeText.replace(/[ ]{2,}/g, " ");
pRangeText=pRangeText.replace(/&/g, "&");
pRangeText=pRangeText.replace(/</g, "<");
pRangeText=pRangeText.replace(/>/g, ">");
pRangeText=pRangeText.replace(/"/g, """);
}
if (dwPaintType & 0x80 /*AEHPT_LINK*/)
{
if (bBBCode)
pRangeText="[url=" + pRangeText + "]" + pRangeText + "[/url]";
else
pRangeText="<a href=\"" + pRangeText + "\">" + pRangeText + "</a>";
}
if (dwFontStyle == 2 /*AEHLS_FONTBOLD*/)
{
if (bBBCode)
pRangeText="[b]" + pRangeText + "[/b]";
else
pRangeText="<b>" + pRangeText + "</b>";
}
else if (dwFontStyle == 3 /*AEHLS_FONTITALIC*/)
{
if (bBBCode)
pRangeText="[i]" + pRangeText + "[/i]";
else
pRangeText="<i>" + pRangeText + "</i>";
}
else if (dwFontStyle == 4 /*AEHLS_FONTBOLDITALIC*/)
{
if (bBBCode)
pRangeText="[b][i]" + pRangeText + "[/i][/b]";
else
pRangeText="<b><i>" + pRangeText + "</i></b>";
}
if (dwSystemTextColor != dwActiveTextColor)
{
if (bBBCode)
nMemTextBytes+=AkelPad.MemCopy(lpMemText?lpMemText + nMemTextBytes:0, "[color=#" + rgb2hex(dwActiveTextColor) + "]" + pRangeText + "[/color]", _TSTR) - _TSIZE;
else
{
if (bStrict)
nMemTextBytes+=AkelPad.MemCopy(lpMemText?lpMemText + nMemTextBytes:0, "<span style=\"color:#" + rgb2hex(dwActiveTextColor) + ";\">" + pRangeText + "</span>", _TSTR) - _TSIZE;
else
nMemTextBytes+=AkelPad.MemCopy(lpMemText?lpMemText + nMemTextBytes:0, "<font color=\"#" + rgb2hex(dwActiveTextColor) + "\">" + pRangeText + "</font>", _TSTR) - _TSIZE;
}
}
else nMemTextBytes+=AkelPad.MemCopy(lpMemText?lpMemText + nMemTextBytes:0, pRangeText, _TSTR) - _TSIZE;
}
if (IsLastCharInLine(crAkelRange + (_X64?24:12) /*offsetof(AECHARRANGE, ciMax)*/) && IndexCompare(crAkelRange + (_X64?24:12) /*offsetof(AECHARRANGE, ciMax)*/, lpGH + (_X64?48:24) /*offsetof(AEGETHIGHLIGHT, crText.ciMax)*/))
{
if (bBBCode)
nMemTextBytes+=AkelPad.MemCopy(lpMemText?lpMemText + nMemTextBytes:0, "\r", _TSTR) - _TSIZE;
else
nMemTextBytes+=AkelPad.MemCopy(lpMemText?lpMemText + nMemTextBytes:0, "\r" + (bXHTML?"<br/>":"<br>"), _TSTR) - _TSIZE;
}
return 0;
}
function rgb2hex(dwColor)
{
var pHexColor;
pHexColor=dwColor.toString(16)
while (pHexColor.length < 6) pHexColor="0" + pHexColor;
return pHexColor.substr(4, 2) + pHexColor.substr(2, 2) + pHexColor.substr(0, 2);
}
function IsLastCharInLine(lpCharIndex)
{
var nCharInLine=AkelPad.MemRead(lpCharIndex + (_X64?16:8) /*offsetof(AECHARINDEX, nCharInLine)*/, 3 /*DT_DWORD*/);
var lpLine=AkelPad.MemRead(lpCharIndex + (_X64?8:4) /*offsetof(AECHARINDEX, lpLine)*/, 2 /*DT_QWORD*/);
var nLineLen=AkelPad.MemRead(lpLine + (_X64?24:12) /*offsetof(AELINEDATA, nLineLen)*/, 3 /*DT_DWORD*/);
var nLineBreak=AkelPad.MemRead(lpLine + (_X64?28:16) /*offsetof(AELINEDATA, nLineBreak)*/, 3 /*DT_DWORD*/);
if (nCharInLine == nLineLen && nLineBreak != 9 /*AELB_WRAP*/)
return true;
return false;
}
function IndexCompare(lpCharIndex1, lpCharIndex2)
{
var nCharInLine1=AkelPad.MemRead(lpCharIndex1 + (_X64?16:8) /*offsetof(AECHARINDEX, nCharInLine)*/, 3 /*DT_DWORD*/);
var nLine1=AkelPad.MemRead(lpCharIndex1 + 0 /*offsetof(AECHARINDEX, nLine)*/, 3 /*DT_DWORD*/);
var nCharInLine2=AkelPad.MemRead(lpCharIndex2 + (_X64?16:8) /*offsetof(AECHARINDEX, nCharInLine)*/, 3 /*DT_DWORD*/);
var nLine2=AkelPad.MemRead(lpCharIndex2 + 0 /*offsetof(AECHARINDEX, nLine)*/, 3 /*DT_DWORD*/);
if (nLine1 == nLine2 && nCharInLine1 == nCharInLine2)
return 0;
if (nLine1 < nLine2 || (nLine1 == nLine2 && nCharInLine1 < nCharInLine2))
return -1;
return 1;
}
function GetLangString(nStringID)
{
var nLangID=AkelPad.GetLangId(1 /*LANGID_PRIMARY*/);
if (nLangID == 0x19) //LANG_RUSSIAN
{
if (nStringID == 0)
return "\u041F\u043E\u0434\u0441\u0432\u0435\u0447\u0435\u043D\u043E\u0020\u0441\u0020\u043F\u043E\u043C\u043E\u0449\u044C\u044E\u0020\u0441\u043A\u0440\u0438\u043F\u0442\u0430";
if (nStringID == 1)
return "\u0434\u043B\u044F AkelPad";
if (nStringID == 2)
return "\u041A\u043E\u0434\u0020\u043F\u043E\u043C\u0435\u0449\u0435\u043D\u0020\u0432\u0020\u0431\u0443\u0444\u0435\u0440\u0020\u043E\u0431\u043C\u0435\u043D\u0430\u002E";
}
else
{
if (nStringID == 0)
return "Highlighted with script";
if (nStringID == 1)
return "for AkelPad";
if (nStringID == 2)
return "Code has been placed in clipboard.";
}
return "";
}
|
Example
Last edited by Instructor on Sat Jul 16, 2011 7:21 pm; edited 9 times in total |
|
| Back to top |
|
 |
KDJ
Joined: 06 Mar 2010 Posts: 1068 Location: Poland
|
Posted: Wed May 25, 2011 6:38 pm Post subject: |
|
|
Translates text via Google, MS Bing and Yandex - Part One.
Part Two is in the next post. Both parts should be placed in one file.
In one file is here: KDJ.zip
I used some code from the script TranslateWithGoogleAPI.js, written by VladSh, thanks for translator idea.
Translator.js
| Code: | // Translator.js - ver. 2013-05-03
//
// On line translator via Google, MS Bing and Yandex.
//
// Usage in AkelPad window:
// Call("Scripts::Main", 1, "Translator.js")
// Call("Scripts::Main", 1, "Translator.js", "en ru") - translates from English to Russian
// Call("Scripts::Main", 1, "Translator.js", "auto pl 1") - autodetect source language, translates to Polish, source text from Clipboard
//
// Usage in command line (required AkelEdit.dll and registration Scripts.dll):
// Wscript.exe Translator.js
//
// Shortcut keys in dialog box:
// Tab - change edit panel focus source <-> target (double-panel mode)
// Ctrl+Enter, - double-panel mode - translates entire text from source panel
// - single-panel mode - translates selected text from AkelPad window or text from Clipboard
// Alt+Enter - works as Ctrl+Enter, but translated text will be added at the end in target panel
// Shift+Enter - double-window mode - translates selected text from source panel;
// if is not selection - translates entire text
// - single-panel mode - translates selected text from AkelPad window or text from Clipboard
// Ctrl+L - listen entire text from active edit panel
// Ctrl+Shift+L - listen selected text from active edit panel
// Alt+U - switch languages
// Shift+Alt+U - switch languages and texts (double-panel mode only)
// Alt+F1 - choose translator
// Alt+1 - choose from language
// Alt+2 - choose to language
// Ctrl+F - switch font AkelPad/GUI/other
// Ctrl+U - switch wordwrap
// Ctrl+W - source panel on/off
// Alt+S - settings
// Alt+-+ - change opaque/transparency level of dialog box
// F4 - maximize/restore window
// Right click - context menu in edit panels
var oFSO = new ActiveXObject("Scripting.FileSystemObject");
var sIniFile = WScript.ScriptFullName.substring(0, WScript.ScriptFullName.lastIndexOf(".")) + ".ini";
var sTxtCaption;
var sTxtUse;
var sTxtFromLang;
var sTxtToLang;
var sTxtAutoDetect;
var sTxtTranslate;
var sTxtTranslateP;
var sTxtOptions;
var sTxtSource;
var sTxtTarget;
var sTxtSettings;
var sTxtUndo;
var sTxtRedo;
var sTxtCut;
var sTxtCopyCB;
var sTxtInsertAP;
var sTxtPasteCB;
var sTxtPasteAP;
var sTxtDelete;
var sTxtSelectAll;
var sTxtEntireText;
var sTxtInterface;
var sTxtSourceInCB;
var sTxtSourceWnd;
var sTxtLoadText;
var sTxtImmediate;
var sTxtFontAP;
var sTxtFontGUI;
var sTxtWordWrap;
var sTxtSortLang;
var sTxtSortCode;
var sTxtSortName;
var sTxtOwnKey;
var sTxtRegister;
var sTxtOK;
var sTxtCancel;
var sTxtError;
var sTxtNoText;
var sTxtNoSupport;
var sTxtNoInternet;
var sTxtWait;
var sTxtUndefined;
var sTxtRegScripts;
var sTxtNoLibrary;
var aLangs = [
["af" , "", 1, 0, 0, 1], /*1 - available in Google, 0 - not in Bing, 0 - not in Yandex, 1 - available Google TTS*/
["ar" , "", 1, 1, 0, 1],
["be" , "", 1, 0, 0, 0],
["bg" , "", 1, 1, 1, 0],
["ca" , "", 1, 1, 0, 1],
["cs" , "", 1, 1, 1, 1],
["cy" , "", 1, 0, 0, 1],
["da" , "", 1, 1, 0, 1],
["de" , "", 1, 1, 1, 1],
["el" , "", 1, 1, 0, 1],
["en" , "", 1, 1, 1, 1],
["eo" , "", 1, 0, 0, 1],
["es" , "", 1, 1, 1, 1],
["et" , "", 1, 1, 0, 0],
["fa" , "", 1, 1, 0, 0],
["fi" , "", 1, 1, 0, 1],
["fr" , "", 1, 1, 1, 1],
["ga" , "", 1, 0, 0, 0],
["gl" , "", 1, 0, 0, 0],
["hi" , "", 1, 1, 0, 1],
["hr" , "", 1, 0, 0, 1],
["ht" , "", 1, 1, 0, 1],
["hu" , "", 1, 1, 0, 1],
["id" , "", 1, 1, 0, 1],
["is" , "", 1, 0, 0, 1],
["it" , "", 1, 1, 1, 1],
["iw" , "", 1, 1, 0, 0],
["ja" , "", 1, 1, 0, 1],
["ko" , "", 1, 1, 0, 1],
["la" , "", 1, 0, 0, 1],
["lt" , "", 1, 1, 0, 0],
["lv" , "", 1, 1, 0, 1],
["mk" , "", 1, 0, 0, 1],
["ms" , "", 1, 1, 0, 0],
["mt" , "", 1, 0, 0, 0],
["nl" , "", 1, 1, 0, 1],
["no" , "", 1, 1, 0, 1],
["pl" , "", 1, 1, 1, 1],
["pt" , "", 1, 1, 0, 1],
["ro" , "", 1, 1, 1, 1],
["ru" , "", 1, 1, 1, 1],
["sk" , "", 1, 1, 0, 1],
["sl" , "", 1, 1, 0, 0],
["sq" , "", 1, 0, 0, 1],
["sr" , "", 1, 0, 1, 1],
["sv" , "", 1, 1, 0, 1],
["sw" , "", 1, 0, 0, 1],
["th" , "", 1, 1, 0, 1],
["tl" , "", 1, 0, 0, 0],
["tr" , "", 1, 1, 1, 1],
["uk" , "", 1, 1, 1, 0],
["ur" , "", 1, 1, 0, 0],
["vi" , "", 1, 1, 0, 1],
["yi" , "", 1, 0, 0, 0],
["zh" , "", 1, 0, 0, 1],
["zh-CN", "", 1, 1, 0, 1],
["zh-TW", "", 1, 1, 0, 1]];
var aAPIs = [{"Name": "Google",
"APIkey": "",
"APIkeyP": "",
"RegistrURL": "",
"AutoDetect": 1,
"TextLen": 48000},
{"Name": "MS Bing",
"APIkey": "49F91281913BE5C04C18F184C4A14ED6097F6AD3",
"APIkeyP": "",
"RegistrURL": "http://www.bing.com/developers",
"AutoDetect": 1,
"TextLen": 10000}, //POST method
//"TextLen": 3500}, //GET method
{"Name": "Yandex",
"APIkey": "",
"APIkeyP": "",
"RegistrURL": "",
"AutoDetect": 0,
"TextLen": 10000}];
var oSelect = {"API": 0,
"FromLang": 0,
"ToLang" : 0,
"Source1" : 0,
"Source2" : 0,
"Target1" : 0,
"Target2" : 0};
var oWndMin = {"W": 656,
"H": 200};
var oWndPos = {"X": 100,
"Y": 120,
"W": oWndMin.W,
"H": oWndMin.H,
"Max": 0};
var nOpaque = 255;
var bSourceInCB = 0;
var bSourceWnd = 1;
var bLoadText = 1;
var bImmediate = 0;
var bFontAP = 0;
var bFontGUI = 0;
var bWordWrap = 1;
var bSortCode = 0;
var nDetectLang = -1;
var sSource = "";
var sTarget = "";
var sLanguage = "";
var aFont;
ReadIniFile();
ReadInterfaceLang();
GetAkelPadObject();
var oSys = AkelPad.SystemFunction();
var hInstanceDLL = AkelPad.GetInstanceDll();
var sClassName = "AkelPad::Scripts::" + WScript.ScriptName + "::" + hInstanceDLL;
var hWndDlg;
if (hWndDlg = oSys.Call("User32::FindWindowExW", 0, 0, sClassName, 0))
{
if (! oSys.Call("User32::IsWindowVisible", hWndDlg))
oSys.Call("User32::ShowWindow", hWndDlg, 8 /*SW_SHOWNA*/);
if (oSys.Call("User32::IsIconic", hWndDlg))
oSys.Call("User32::ShowWindow", hWndDlg, 9 /*SW_RESTORE*/);
oSys.Call("User32::SetForegroundWindow", hWndDlg);
}
else
{
var DT_UNICODE = 1;
var DT_DWORD = 3;
var DT_BYTE = 5;
var CB_ADDSTRING = 0x143;
var CB_GETCOUNT = 0x146;
var CB_GETCURSEL = 0x147;
var CB_SETCURSEL = 0x14E;
var CB_SHOWDROPDOWN = 0x14F;
var CB_GETITEMDATA = 0x150;
var CB_SETITEMDATA = 0x151;
var CB_RESETCONTENT = 0x14B;
var CBN_SELCHANGE = 1;
var CBN_SETFOCUS = 3;
var CBN_CLOSEUP = 8;
var hMainWnd = AkelPad.GetMainWnd();
var hEditWnd = AkelPad.GetEditWnd();
var hGuiFont = oSys.Call("gdi32::GetStockObject", 17 /*DEFAULT_GUI_FONT*/);
var sEditLibName = "AkelEdit.dll";
var hEditLib;
var hFocus;
var hFocusSet;
var bCloseCB;
var nTimerCount;
var nSpeechLang;
var sSpeechText;
var sSpeechPart;
var uSpeechBody;
if (bSourceWnd && bLoadText)
{
if (bSourceInCB || (! hEditWnd) || ((WScript.Arguments.length > 2) && (WScript.Arguments(2) == "1")))
{
if (oSys.Call("User32::IsClipboardFormatAvailable", 13 /*CF_UNICODETEXT*/))
{
sSource = AkelPad.GetClipboardText().substr(0, aAPIs[oSelect.API].TextLen);
oSelect.Source1 = oSelect.Source2 = 0;
}
}
else if (AkelPad.SendMessage(hEditWnd, 3125 /*AEM_GETSEL*/, 0, 0))
{
sSource = AkelPad.GetSelText(3 /*"\r\n"*/).substr(0, aAPIs[oSelect.API].TextLen);
oSelect.Source1 = oSelect.Source2 = 0;
}
}
if (oWndPos.H < oWndMin.H)
oWndPos.H = oWndMin.H;
if (oWndPos.W < oWndMin.W)
oWndPos.W = oWndMin.W;
if (hEditWnd && bFontAP && bFontGUI)
bFontGUI = 0;
if (! aFont)
aFont = ConvertFontFormat(hGuiFont, 2, 3);
//Main dialog
var aSubClassHand = [];
var aWnd = [];
var IDUSE = 1000;
var IDAPICB = 1001;
var IDDETECTLANG = 1002;
var IDFROMLANG = 1003;
var IDFROMLANGCB = 1004;
var IDTOLANG = 1005;
var IDTOLANGCB = 1006;
var IDSWITCHLANG = 1007;
var IDSWITCHALL = 1008;
var IDLISTEN1 = 1009;
var IDLISTEN2 = 1010;
var IDOPAQMINUS = 1011;
var IDOPAQPLUS = 1012;
var IDTRANSLATE = 1013;
var IDOPTIONS = 1014;
var IDTXTSOURCE = 1015;
var IDTXTTARGET = 1016;
var IDTIMER = 1017;
var nListenID = IDLISTEN1;
//Settings dialog
var aWndSet = [];
var IDINTERFACECB = 1100;
var IDINTERFACE = 1101;
var IDEDITOPTIONS = 1102;
var IDSOURCEINCB = 1103;
var IDSOURCEWND = 1104;
var IDLOADTEXT = 1105;
var IDIMMEDIATE = 1106;
var IDWORDWRAP = 1107;
var IDFONTAP = 1108;
var IDFONTGUI = 1109;
var IDFONT = 1110;
var IDSORTLANG = 1111;
var IDSORTCODE = 1112;
var IDSORTNAME = 1113;
var IDAPINAME1 = 1114;
var IDAPIKEYS1 = 1115;
var IDAPIKEY1 = 1116;
var IDREGIST1 = 1117;
var IDREGURL1 = 1118;
var IDOK = 1119;
var IDCANCEL = 1120;
var WNDCLASS = 0;
var WND = 1;
var WNDSTY = 2;
var WNDX = 3;
var WNDY = 4;
var WNDW = 5;
var WNDH = 6;
var WNDTXT = 7;
//0x50000000 - WS_VISIBLE|WS_CHILD
//0x50000007 - WS_VISIBLE|WS_CHILD|BS_GROUPBOX
//0x50000009 - WS_VISIBLE|WS_CHILD|BS_AUTORADIOBUTTON
//0x50010000 - WS_VISIBLE|WS_CHILD|WS_TABSTOP
//0x50010001 - WS_VISIBLE|WS_CHILD|WS_TABSTOP|BS_DEFPUSHBUTTON
//0x50010003 - WS_VISIBLE|WS_CHILD|WS_TABSTOP|BS_AUTOCHECKBOX
//0x50200003 - WS_VISIBLE|WS_CHILD|WS_VSCROLL|CBS_DROPDOWNLIST
//0x50200103 - WS_VISIBLE|WS_CHILD|WS_VSCROLL|CBS_SORT|CBS_DROPDOWNLIST
//0x50210103 - WS_VISIBLE|WS_CHILD|WS_VSCROLL|WS_TABSTOP|CBS_SORT|CBS_DROPDOWNLIST
//0x50810080 - WS_VISIBLE|WS_CHILD|WS_BORDER|WS_TABSTOP|ES_AUTOHSCROLL
//0x50810880 - WS_VISIBLE|WS_CHILD|WS_BORDER|WS_TABSTOP|ES_READONLY|ES_AUTOHSCROLL
//0x50311104 - WS_VISIBLE|WS_CHILD|WS_HSCROLL|WS_VSCROLL|WS_TABSTOP|ES_WANTRETURN|ES_NOHIDESEL|ES_MULTILINE
//0x50B11104 - WS_VISIBLE|WS_CHILD|WS_BORDER|WS_HSCROLL|WS_VSCROLL|WS_TABSTOP|ES_WANTRETURN|ES_NOHIDESEL|ES_MULTILINE
//Windows WNDCLASS, WND, WNDSTY,WNDX,WNDY,WNDW,WNDH, WNDTXT
aWnd[IDUSE ] = ["STATIC", 0, 0x50000000, 10, 10, 80, 13];
aWnd[IDAPICB ] = ["COMBOBOX", 0, 0x50200003, 10, 25, 80, 100, ""];
aWnd[IDDETECTLANG ] = ["STATIC", 0, 0x50000000, 10, 60, 210, 13, ""];
aWnd[IDFROMLANG ] = ["STATIC", 0, 0x50000000, 110, 10, 200, 13];
aWnd[IDFROMLANGCB ] = ["COMBOBOX", 0, 0x50200103, 110, 25, 200, 420, ""];
aWnd[IDTOLANG ] = ["STATIC", 0, 0x50000000, 340, 10, 200, 13];
aWnd[IDTOLANGCB ] = ["COMBOBOX", 0, 0x50200103, 340, 25, 200, 420, ""];
aWnd[IDSWITCHLANG ] = ["BUTTON", 0, 0x50000000, 310, 25, 30, 21, "<->"];
aWnd[IDSWITCHALL ] = ["BUTTON", 0, 0x50000000, 310, 50, 30, 21, "<=>"];
aWnd[IDLISTEN1 ] = ["BUTTON", 0, 0x50000000, 225, 50, 80, 21, sTxtListen];
aWnd[IDLISTEN2 ] = ["BUTTON", 0, 0x50000000, 345, 50, 80, 21, sTxtListen];
aWnd[IDOPAQMINUS ] = ["BUTTON", 0, 0x50000000, 617, 0, 15, 16, "-"];
aWnd[IDOPAQPLUS ] = ["BUTTON", 0, 0x50000000, 632, 0, 15, 16, "+"];
aWnd[IDTRANSLATE ] = ["BUTTON", 0, 0x50000000, 560, 25, 80, 21];
aWnd[IDOPTIONS ] = ["BUTTON", 0, 0x50000000, 560, 50, 80, 21];
aWnd[IDTXTSOURCE ] = ["AkelEditW", 0, 0x50311104, 10, 75, 310, 80, sSource];
aWnd[IDTXTTARGET ] = ["AkelEditW", 0, 0x50311104, 330, 75, 310, 80, sTarget];
aWndSet[IDINTERFACECB] = ["COMBOBOX", 0, 0x50210103, 10, 10, 150, 150, ""];
aWndSet[IDINTERFACE ] = ["STATIC", 0, 0x50000000, 165, 13, 120, 13];
aWndSet[IDEDITOPTIONS] = ["BUTTON", 0, 0x50000007, 10, 40, 285, 185, ""];
aWndSet[IDSOURCEINCB ] = ["BUTTON", 0, 0x50010003, 20, 55, 270, 16];
aWndSet[IDSOURCEWND ] = ["BUTTON", 0, 0x50010003, 20, 75, 270, 16];
aWndSet[IDLOADTEXT ] = ["BUTTON", 0, 0x50010003, 20, 95, 270, 16];
aWndSet[IDIMMEDIATE ] = ["BUTTON", 0, 0x50010003, 20, 115, 270, 16];
aWndSet[IDWORDWRAP ] = ["BUTTON", 0, 0x50010003, 20, 135, 270, 16];
aWndSet[IDFONTAP ] = ["BUTTON", 0, 0x50010003, 20, 155, 270, 16];
aWndSet[IDFONTGUI ] = ["BUTTON", 0, 0x50010003, 20, 175, 270, 16];
aWndSet[IDFONT ] = ["BUTTON", 0, 0x50010000, 20, 195, 170, 20, aFont.toString()];
aWndSet[IDSORTLANG ] = ["BUTTON", 0, 0x50000007, 305, 160, 120, 65];
aWndSet[IDSORTCODE ] = ["BUTTON", 0, 0x50000009, 315, 180, 90, 16];
aWndSet[IDSORTNAME ] = ["BUTTON", 0, 0x50000009, 315, 200, 90, 16];
aWndSet[IDAPINAME1 ] = ["BUTTON", 0, 0x50000007, 10, 235, 415, 75];
aWndSet[IDAPIKEYS1 ] = ["STATIC", 0, 0x50000000, 20, 255, 70, 13, "AppID:"];
aWndSet[IDAPIKEY1 ] = ["EDIT", 0, 0x50810080, 90, 255, 325, 20, ""];
aWndSet[IDREGIST1 ] = ["STATIC", 0, 0x50000000, 20, 280, 70, 13];
aWndSet[IDREGURL1 ] = ["EDIT", 0, 0x50810880, 90, 280, 325, 20, aAPIs[1].RegistrURL];
aWndSet[IDOK ] = ["BUTTON", 0, 0x50010001, 345, 10, 80, 23];
aWndSet[IDCANCEL ] = ["BUTTON", 0, 0x50010000, 345, 35, 80, 23];
SetInterfaceLangToWndDef();
if (! hMainWnd)
{
hEditLib = oSys.Call("kernel32::LoadLibraryW", sEditLibName);
if (! hEditLib)
{
WScript.Echo(sTxtNoLibrary + sEditLibName);
WScript.Quit();
}
}
var hIcon = oSys.Call("User32::LoadImageW",
hInstanceDLL, //hinst
101, //lpszName
1, //uType=IMAGE_ICON
0, //cxDesired
0, //cyDesired
0x00000040); //fuLoad=LR_DEFAULTSIZE
var nBufSize = 0xFFFF;
var lpBuffer = AkelPad.MemAlloc(nBufSize * 2);
AkelPad.WindowRegisterClass(sClassName);
hWndDlg = oSys.Call("User32::CreateWindowExW",
0, //dwExStyle
sClassName, //lpClassName
sTxtCaption, //lpWindowName
0x80CF0000, //dwStyle=WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_MAXIMIZEBOX|WS_MINIMIZEBOX|WS_THICKFRAME
oWndPos.X, //x
oWndPos.Y, //y
oWndPos.W, //nWidth
oWndPos.H, //nHeight
hMainWnd, //hWndParent
0, //ID
hInstanceDLL, //hInstance
DialogCallback); //Script function callback. To use it class must be registered by WindowRegisterClass.
oSys.Call("User32::ShowWindow", hWndDlg, oWndPos.Max ? 3 /*SW_MAXIMIZE*/ : 1 /*SW_SHOWNORMAL*/);
//Allow other scripts running
AkelPad.ScriptNoMutex();
//Message loop
AkelPad.WindowGetMessage();
AkelPad.WindowUnregisterClass(sClassName);
AkelPad.MemFree(lpBuffer);
oSys.Call("user32::DestroyIcon", hIcon);
if (hEditLib)
oSys.Call("kernel32::FreeLibrary", hEditLib);
}
function SetInterfaceLangToWndDef()
{
aWnd[IDUSE ][WNDTXT] = sTxtUse;
aWnd[IDFROMLANG ][WNDTXT] = sTxtFromLang;
aWnd[IDTOLANG ][WNDTXT] = sTxtToLang;
aWnd[IDLISTEN1 ][WNDTXT] = sTxtListen;
aWnd[IDLISTEN2 ][WNDTXT] = sTxtListen;
aWnd[IDTRANSLATE][WNDTXT] = sTxtTranslate;
aWnd[IDOPTIONS ][WNDTXT] = sTxtOptions;
aWndSet[IDINTERFACE ][WNDTXT] = sTxtInterface;
aWndSet[IDSOURCEINCB][WNDTXT] = sTxtSourceInCB;
aWndSet[IDSOURCEWND ][WNDTXT] = sTxtSourceWnd + " (Ctrl+W)";
aWndSet[IDLOADTEXT ][WNDTXT] = sTxtLoadText;
aWndSet[IDIMMEDIATE ][WNDTXT] = sTxtImmediate;
aWndSet[IDWORDWRAP ][WNDTXT] = sTxtWordWrap + " (Ctrl+U)";
aWndSet[IDFONTAP ][WNDTXT] = sTxtFontAP + " (Ctrl+F)";
aWndSet[IDFONTGUI ][WNDTXT] = sTxtFontGUI + " (Ctrl+F)";
aWndSet[IDSORTLANG ][WNDTXT] = sTxtSortLang;
aWndSet[IDSORTCODE ][WNDTXT] = sTxtSortCode;
aWndSet[IDSORTNAME ][WNDTXT] = sTxtSortName;
aWndSet[IDAPINAME1 ][WNDTXT] = aAPIs[1].Name + " - " + sTxtOwnKey;
aWndSet[IDREGIST1 ][WNDTXT] = sTxtRegister;
aWndSet[IDOK ][WNDTXT] = sTxtOK;
aWndSet[IDCANCEL ][WNDTXT] = sTxtCancel;
}
function DialogCallback(hWnd, uMsg, wParam, lParam)
{
if (uMsg == 1) //WM_CREATE
{
var oError;
var i;
for (i = IDUSE; i < aWnd.length; ++i)
{
aWnd[i][WND] = oSys.Call("User32::CreateWindowExW",
0, //dwExStyle
aWnd[i][WNDCLASS], //lpClassName
0, //lpWindowName
aWnd[i][WNDSTY], //dwStyle
aWnd[i][WNDX], //x
aWnd[i][WNDY], //y
aWnd[i][WNDW], //nWidth
aWnd[i][WNDH], //nHeight
hWnd, //hWndParent
i, //ID
hInstanceDLL, //hInstance
0); //lpParam
//Set font and text
SetWndFontAndText(aWnd[i][WND], hGuiFont, aWnd[i][WNDTXT]);
}
AkelPad.SendMessage(hWnd, 0x0080 /*WM_SETICON*/, 0 /*ICON_SMALL*/, hIcon);
SetEditWordWrap();
SetEditFont();
for (i = IDTXTSOURCE; i <= IDTXTTARGET; ++i)
{
AkelPad.SendMessage(aWnd[i][WND], 1093 /*EM_SETEVENTMASK*/, 0, 0x00080001 /*ENM_CHANGE|ENM_SELCHANGE*/);
aSubClassHand[i] = AkelPad.WindowSubClass(aWnd[i][WND], EditCallback, 256 /*WM_KEYDOWN*/, 258 /*WM_CHAR*/);
}
AkelPad.SendMessage(aWnd[IDTXTSOURCE][WND], 197 /*EM_SETLIMITTEXT*/, aAPIs[oSelect.API].TextLen, 0);
AkelPad.SendMessage(aWnd[IDTXTTARGET][WND], 197 /*EM_SETLIMITTEXT*/, nBufSize - 1, 0);
AkelPad.SendMessage(aWnd[IDTXTSOURCE][WND], 0x00B1 /*EM_SETSEL*/, oSelect.Source1, oSelect.Source2);
AkelPad.SendMessage(aWnd[IDTXTTARGET][WND], 0x00B1 /*EM_SETSEL*/, oSelect.Target1, oSelect.Target2);
//Fill combobox APIs
for (i = 0; i < aAPIs.length; ++i)
{
AkelPad.MemCopy(lpBuffer, aAPIs[i].Name, DT_UNICODE);
AkelPad.SendMessage(aWnd[IDAPICB][WND], CB_ADDSTRING, 0, lpBuffer);
}
AkelPad.SendMessage(aWnd[IDAPICB][WND], CB_SETCURSEL, oSelect.API, 0);
FillComboLangs();
ShowDetectLang(true);
if (nOpaque < 255)
SetOpaqueLevel(hWnd, nOpaque);
ShowSourceWindow();
if (((! bSourceWnd) || (bSourceWnd && bLoadText)) && (bImmediate))
{
try
{
new ActiveXObject("htmlfile").parentWindow.setTimeout(function()
{
oSys.Call("User32::PostMessageW", hWnd, 273 /*WM_COMMAND*/, IDTRANSLATE, 0);
}, 0);
}
catch (oError)
{
oSys.Call("User32::PostMessageW", hWnd, 273 /*WM_COMMAND*/, IDTRANSLATE, 0);
}
}
}
else if (uMsg == 7) //WM_SETFOCUS
{
hEditWnd = AkelPad.GetEditWnd();
oSys.Call("User32::SetFocus", hFocus);
}
else if (uMsg == 36) //WM_GETMINMAXINFO
{
AkelPad.MemCopy(lParam + 24, oWndMin.W, DT_DWORD); //ptMinTrackSize_x
AkelPad.MemCopy(lParam + 28, oWndMin.H, DT_DWORD); //ptMinTrackSize_y
}
else if (uMsg == 3) //WM_MOVE
{
if (! oSys.Call("User32::IsZoomed", hWnd))
GetWindowPos(hWnd, oWndPos);
}
else if (uMsg == 5) //WM_SIZE
{
if (wParam != 2) //SIZE_MAXIMIZED
GetWindowPos(hWnd, oWndPos);
ResizeWindow(hWnd);
}
else if (uMsg == 15) //WM_PAINT
PaintSizeGrip(hWnd);
else if (uMsg == 256) //WM_KEYDOWN
{
if (wParam == 13 /*VK_RETURN*/)
{
if ((Ctrl() || Shift()) &&
((oSys.Call("User32::GetFocus") == aWnd[IDTXTSOURCE][WND]) ||
(oSys.Call("User32::GetFocus") == aWnd[IDTXTTARGET][WND])))
Translate(Shift());
}
else if ((wParam == 0x4C /*L key*/) && Ctrl() && (! Alt()))
Listen(hFocus, Number(Shift()));
else if ((wParam == 0x43 /*C key*/) && Ctrl() && Shift())
InsertTextToAP(hFocus, 0);
else if ((wParam == 0x56 /*V key*/) && Ctrl() && Shift())
PasteTextFromAP(hFocus, 0);
else if ((wParam == 0x46 /*F key*/) && Ctrl())
{
if (hEditWnd)
{
if (bFontAP)
{
bFontAP = 0;
bFontGUI = 1;
}
else if (bFontGUI)
bFontGUI = 0;
else
bFontAP = 1;
}
else
bFontGUI = ! bFontGUI;
SetEditFont();
oSys.Call("User32::InvalidateRect", hWnd, 0, 0);
}
else if ((wParam == 0x55 /*U key*/) && Ctrl())
{
bWordWrap = ! bWordWrap;
SetEditWordWrap();
}
else if ((wParam == 0x57 /*W key*/) && Ctrl())
{
bSourceWnd = ! bSourceWnd;
ShowSourceWindow();
}
else if (wParam == 0x73 /*VK_F4*/)
oSys.Call("User32::ShowWindow", hWnd, oSys.Call("User32::IsZoomed", hWnd) ? 9 /*SW_RESTORE*/ : 3 /*SW_MAXIMIZE*/);
else if ((wParam == 27 /*VK_ESCAPE*/) && bCloseCB)
oSys.Call("User32::PostMessageW", hWnd, 16 /*WM_CLOSE*/, 0, 0);
}
else if (uMsg == 260) //WM_SYSKEYDOWN
{
if (wParam == 13) //VK_RETURN
{
oSys.Call("User32::SetFocus", hFocus);
Translate(Shift(), 1);
}
else if (wParam == 0x58) //X key
{
CopyEntireTextToCB(hFocus);
DeleteEntireText(hFocus);
}
else if (wParam == 0x43) //C key
{
if (Shift())
InsertTextToAP(hFocus, 1);
else
CopyEntireTextToCB(hFocus);
}
else if (wParam == 0x56) //V key
{
if (Shift())
PasteTextFromAP(hFocus, 1);
else
PasteEntireTextFromCB(hFocus);
}
else if (wParam == 0x2E) //VK_DELETE
DeleteEntireText(hFocus);
else if (wParam == 0x55) //U key
{
if (Shift())
{
if (bSourceWnd)
oSys.Call("User32::PostMessageW", hWnd, 273 /*WM_COMMAND*/, IDSWITCHALL, 0);
}
else
oSys.Call("User32::PostMessageW", hWnd, 273 /*WM_COMMAND*/, IDSWITCHLANG, 0);
}
else if (wParam == 0x70) //VK_F1
oSys.Call("User32::SetFocus", aWnd[IDAPICB][WND]);
else if (wParam == 0x31) //1 key
oSys.Call("User32::SetFocus", aWnd[IDFROMLANGCB][WND]);
else if (wParam == 0x32) //2 key
oSys.Call("User32::SetFocus", aWnd[IDTOLANGCB][WND]);
else if ((wParam == 109) || (wParam == 189)) //Num- or -
oSys.Call("User32::PostMessageW", hWnd, 273 /*WM_COMMAND*/, IDOPAQMINUS, 0);
else if ((wParam == 107) || (wParam == 187)) //Num+ or +
oSys.Call("User32::PostMessageW", hWnd, 273 /*WM_COMMAND*/, IDOPAQPLUS, 0);
else if (wParam == 0x53) //S key
Settings();
}
else if (uMsg == 123) //WM_CONTEXTMENU
{
if ((wParam == aWnd[IDTXTSOURCE][WND]) || (wParam == aWnd[IDTXTTARGET][WND]))
ContextMenu(wParam, lParam);
}
else if (uMsg == 0x004E) //WM_NOTIFY
{
if (AkelPad.MemRead(lParam + 8, DT_DWORD) == 0x0702 /*EN_SELCHANGE*/)
{
if (wParam == IDTXTSOURCE)
{
oSelect.Source1 = AkelPad.MemRead(lParam + 12, DT_DWORD);
oSelect.Source2 = AkelPad.MemRead(lParam + 16, DT_DWORD);
}
else if (wParam == IDTXTTARGET)
{
oSelect.Target1 = AkelPad.MemRead(lParam + 12, DT_DWORD);
oSelect.Target2 = AkelPad.MemRead(lParam + 16, DT_DWORD);
}
}
}
else if (uMsg == 0x3B9) //MM_MCINOTIFY
{
if (wParam == 1 /*MCI_NOTIFY_SUCCESSFUL*/)
{
oSys.Call("Winmm::mciSendStringW", "close TTS wait", 0, 0, 0);
PlayTextToSpeech();
}
}
else if (uMsg == 0x0113) //WM_TIMER
SetWndFontAndText(aWnd[nListenID][WND], hGuiFont, (nTimerCount++ % 2) ? sTxtListen : "");
else if (uMsg == 273) //WM_COMMAND
{
var nLowParam = LoWord(wParam);
var nHiwParam = HiWord(wParam);
bCloseCB = 1;
if (nLowParam == IDAPICB)
{
if (nHiwParam == CBN_SETFOCUS)
oSys.Call("User32::PostMessageW", lParam, CB_SHOWDROPDOWN, 1, 0);
if (nHiwParam == CBN_SELCHANGE)
{
var nSel1 = oSelect.Source1;
var nSel2 = oSelect.Source2;
oSelect.API = AkelPad.SendMessage(aWnd[IDAPICB][WND], CB_GETCURSEL, 0, 0);
AkelPad.SendMessage(aWnd[IDTXTSOURCE][WND], 197 /*EM_SETLIMITTEXT*/, aAPIs[oSelect.API].TextLen, 0);
oSys.Call("User32::GetWindowTextW", aWnd[IDTXTSOURCE][WND], lpBuffer, nBufSize);
SetWndFontAndText(aWnd[IDTXTSOURCE][WND], 0, AkelPad.MemRead(lpBuffer, DT_UNICODE).substr(0, aAPIs[oSelect.API].TextLen));
AkelPad.SendMessage(aWnd[IDTXTSOURCE][WND], 0x00B1 /*EM_SETSEL*/, nSel1, nSel2);
ShowDetectLang(false);
FillComboLangs(AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_GETITEMDATA, oSelect.FromLang, 0),
AkelPad.SendMessage(aWnd[IDTOLANGCB ][WND], CB_GETITEMDATA, oSelect.ToLang, 0));
}
else if (nHiwParam == CBN_CLOSEUP)
{
if (oSys.Call("User32::GetFocus") == lParam)
oSys.Call("User32::SetFocus", hFocus);
bCloseCB = 0;
}
}
else if ((nLowParam == IDFROMLANGCB) || (nLowParam == IDTOLANGCB))
{
if (nHiwParam == CBN_SETFOCUS)
oSys.Call("User32::PostMessageW", lParam, CB_SHOWDROPDOWN, 1, 0);
else if (nHiwParam == CBN_SELCHANGE)
{
ShowDetectLang(false);
if (nLowParam == IDFROMLANGCB)
oSelect.FromLang = AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_GETCURSEL, 0, 0);
else
oSelect.ToLang = AkelPad.SendMessage(aWnd[IDTOLANGCB][WND], CB_GETCURSEL, 0, 0);
}
else if (nHiwParam == CBN_CLOSEUP)
{
if (oSys.Call("User32::GetFocus") == lParam)
oSys.Call("User32::SetFocus", hFocus);
bCloseCB = 0;
}
}
else if (nLowParam == IDTXTSOURCE)
{
if (nHiwParam == 0x0100) //EN_SETFOCUS
{
hFocus = lParam;
SetEditStyle(lParam, aWnd[IDTXTTARGET][WND]);
}
else if (nHiwParam == 0x0300) //EN_CHANGE
ShowDetectLang(false);
}
else if (nLowParam == IDTXTTARGET)
{
if (nHiwParam == 0x0100) //EN_SETFOCUS
{
hFocus = lParam;
SetEditStyle(lParam, aWnd[IDTXTSOURCE][WND]);
}
}
else if ((nLowParam >= IDSWITCHLANG) && (nLowParam <= IDOPTIONS))
{
oSys.Call("User32::DefDlgProcW", hWnd, 1025 /*DM_SETDEFID*/, nLowParam, 0);
oSys.Call("User32::DefDlgProcW", hWnd, 1025 /*DM_SETDEFID*/, IDUSE, 0);
if (nLowParam == IDSWITCHLANG)
SwitchLang();
else if (nLowParam == IDSWITCHALL)
SwitchLang(1);
else if (nLowParam == IDLISTEN1)
Listen(aWnd[IDTXTSOURCE][WND], -1);
else if (nLowParam == IDLISTEN2)
Listen(aWnd[IDTXTTARGET][WND], -1);
else if (nLowParam == IDOPAQMINUS)
{
if (nOpaque > 55)
SetOpaqueLevel(hWnd, -2);
}
else if (nLowParam == IDOPAQPLUS)
{
if (nOpaque < 255)
SetOpaqueLevel(hWnd, -1);
}
else if (nLowParam == IDTRANSLATE)
Translate();
else if (nLowParam == IDOPTIONS)
ContextMenu(lParam, -2);
oSys.Call("User32::SetFocus", hFocus);
}
}
else if (uMsg == 16) //WM_CLOSE
{
oSys.Call("Winmm::mciSendStringW", "close TTS", 0, 0, 0);
KillTimer();
AkelPad.WindowUnsubClass(aWnd[IDTXTSOURCE][WND]);
AkelPad.WindowUnsubClass(aWnd[IDTXTTARGET][WND]);
WriteIniFile();
//Destroy dialog
oSys.Call("User32::DestroyWindow", hWnd);
}
else if (uMsg == 2) //WM_DESTROY
{
//Exit message loop
oSys.Call("User32::PostQuitMessage", 0);
}
return 0;
}
function EditCallback(hWnd, uMsg, wParam, lParam)
{
if (uMsg == 256) //WM_KEYDOWN
{
if ((wParam == 0x56 /*V key*/) && Ctrl() && Shift())
{
AkelPad.WindowNoNextProc(aSubClassHand[oSys.Call("User32::GetDlgCtrlID", hWnd)]);
return 1;
}
}
else if (uMsg == 258) //WM_CHAR
{
if ((wParam == 13 /*VK_RETURN*/) && (Ctrl() || Shift()))
{
AkelPad.WindowNoNextProc(aSubClassHand[oSys.Call("User32::GetDlgCtrlID", hWnd)]);
return 1;
}
}
return 0;
}
function LoWord(nParam)
{
return (nParam & 0xffff);
}
function HiWord(nParam)
{
return ((nParam >> 16) & 0xffff);
}
function Shift()
{
return Boolean(oSys.Call("User32::GetKeyState", 0x10 /*VK_SHIFT*/) & 0x8000);
}
function Ctrl()
{
return Boolean(oSys.Call("User32::GetKeyState", 0x11 /*VK_CONTROL*/) & 0x8000);
}
function Alt()
{
return Boolean(oSys.Call("User32::GetKeyState", 0x12 /*VK_MENU*/) & 0x8000);
}
function SetWndFontAndText(hWnd, hFont, sText)
{
if (hFont)
AkelPad.SendMessage(hWnd, 48 /*WM_SETFONT*/, hFont, true);
AkelPad.MemCopy(lpBuffer, sText.substr(0, nBufSize - 1).replace(/\r$/, ""), DT_UNICODE);
oSys.Call("User32::SetWindowTextW", hWnd, lpBuffer);
}
function GetWindowPos(hWnd, oRect)
{
var lpRect = AkelPad.MemAlloc(16) //sizeof(RECT);
oSys.Call("User32::GetWindowRect", hWnd, lpRect);
oRect.X = AkelPad.MemRead(lpRect, DT_DWORD);
oRect.Y = AkelPad.MemRead(lpRect + 4, DT_DWORD);
oRect.W = AkelPad.MemRead(lpRect + 8, DT_DWORD) - oRect.X;
oRect.H = AkelPad.MemRead(lpRect + 12, DT_DWORD) - oRect.Y;
AkelPad.MemFree(lpRect);
}
function ResizeWindow(hWnd)
{
var oRect = {};
GetWindowPos(hWnd, oRect);
for (i = IDFROMLANG; i <= IDLISTEN2; ++i)
oSys.Call("User32::SetWindowPos", aWnd[i][WND], 0,
aWnd[i][WNDX] + (oRect.W - oWndMin.W) / 2,
aWnd[i][WNDY],
0,
0,
0x15 /*SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE*/);
for (i = IDOPAQMINUS; i <= IDOPTIONS; ++i)
oSys.Call("User32::SetWindowPos", aWnd[i][WND], 0,
aWnd[i][WNDX] + oRect.W - oWndMin.W,
aWnd[i][WNDY],
0,
0,
0x15 /*SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOSIZE*/);
oSys.Call("User32::SetWindowPos", aWnd[IDTXTSOURCE][WND], 0,
0,
0,
aWnd[IDTXTSOURCE][WNDW] + (oRect.W - oWndMin.W) / 2,
aWnd[IDTXTSOURCE][WNDH] + oRect.H - oWndMin.H,
0x16 /*SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOMOVE*/);
if (bSourceWnd)
oSys.Call("User32::SetWindowPos", aWnd[IDTXTTARGET][WND], 0,
aWnd[IDTXTTARGET][WNDX] + (oRect.W - oWndMin.W) / 2,
aWnd[IDTXTTARGET][WNDY],
aWnd[IDTXTTARGET][WNDW] + (oRect.W - oWndMin.W) / 2,
aWnd[IDTXTTARGET][WNDH] + oRect.H - oWndMin.H,
0x14 /*SWP_NOZORDER|SWP_NOACTIVATE*/);
else
oSys.Call("User32::SetWindowPos", aWnd[IDTXTTARGET][WND], 0,
aWnd[IDTXTTARGET][WNDX],
aWnd[IDTXTTARGET][WNDY],
aWnd[IDTXTTARGET][WNDW] + oRect.W - oWndMin.W,
aWnd[IDTXTTARGET][WNDH] + oRect.H - oWndMin.H,
0x14 /*SWP_NOZORDER|SWP_NOACTIVATE*/);
}
function PaintSizeGrip(hWnd)
{
var lpPaint = AkelPad.MemAlloc(64); //sizeof(PAINTSTRUCT)
var lpRect = AkelPad.MemAlloc(16); //sizeof(RECT)
var hDC;
if (hDC = oSys.Call("User32::BeginPaint", hWnd, lpPaint))
{
oSys.Call("User32::GetClientRect", hWnd, lpRect);
AkelPad.MemCopy(lpRect, AkelPad.MemRead(lpRect + 8, DT_DWORD) - oSys.Call("User32::GetSystemMetrics", 2 /*SM_CXVSCROLL*/), DT_DWORD);
AkelPad.MemCopy(lpRect + 4, AkelPad.MemRead(lpRect + 12, DT_DWORD) - oSys.Call("User32::GetSystemMetrics", 20 /*SM_CYVSCROLL*/), DT_DWORD);
oSys.Call("User32::DrawFrameControl", hDC, lpRect, 3 /*DFC_SCROLL*/, 0x8 /*DFCS_SCROLLSIZEGRIP*/);
oSys.Call("User32::EndPaint", hWnd, lpPaint);
}
AkelPad.MemFree(lpPaint);
AkelPad.MemFree(lpRect);
}
function FillComboLangs(nFromLang, nToLang)
{
var nPos;
var i;
AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_RESETCONTENT, 0, 0);
AkelPad.SendMessage(aWnd[IDTOLANGCB ][WND], CB_RESETCONTENT, 0, 0);
if (aAPIs[oSelect.API].AutoDetect)
{
AkelPad.MemCopy(lpBuffer, " " + sTxtAutoDetect, DT_UNICODE);
nPos = AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_ADDSTRING, 0, lpBuffer);
AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_SETITEMDATA, nPos, -1);
}
for (i = 0; i < aLangs.length; ++i)
{
if (aLangs[i][oSelect.API + 2])
{
if (bSortCode) //sort by code
AkelPad.MemCopy(lpBuffer, aLangs[i][0] + " - " + aLangs[i][1], DT_UNICODE);
else //sort by name
AkelPad.MemCopy(lpBuffer, aLangs[i][1] + " - " + aLangs[i][0], DT_UNICODE);
nPos = AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_ADDSTRING, 0, lpBuffer);
AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_SETITEMDATA, nPos, i);
nPos = AkelPad.SendMessage(aWnd[IDTOLANGCB][WND], CB_ADDSTRING, 0, lpBuffer);
AkelPad.SendMessage(aWnd[IDTOLANGCB][WND], CB_SETITEMDATA, nPos, i);
}
}
if ((typeof nFromLang == "undefined") && (typeof nToLang == "undefined"))
{
if (WScript.Arguments.length > 0)
{
if (WScript.Arguments(0).toLowerCase() == "auto")
{
if (aAPIs[oSelect.API].AutoDetect)
oSelect.FromLang = 0;
}
else
{
for (i = aAPIs[oSelect.API].AutoDetect; i < AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_GETCOUNT, 0, 0); ++i)
{
if (WScript.Arguments(0) == aLangs[AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_GETITEMDATA, i, 0)][0])
{
oSelect.FromLang = i;
break;
}
}
}
if (WScript.Arguments.length > 1)
{
for (i = 0; i < AkelPad.SendMessage(aWnd[IDTOLANGCB][WND], CB_GETCOUNT, 0, 0); ++i)
{
if (WScript.Arguments(1) == aLangs[AkelPad.SendMessage(aWnd[IDTOLANGCB][WND], CB_GETITEMDATA, i, 0)][0])
{
oSelect.ToLang = i;
break;
}
}
}
}
}
else
{
if (typeof nFromLang != "undefined")
{
oSelect.FromLang = 0;
for (i = 0; i < AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_GETCOUNT, 0, 0); ++i)
{
if (nFromLang == AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_GETITEMDATA, i, 0))
{
oSelect.FromLang = i;
break;
}
}
}
if (typeof nToLang != "undefined")
{
oSelect.ToLang = 0;
for (i = 0; i < AkelPad.SendMessage(aWnd[IDTOLANGCB][WND], CB_GETCOUNT, 0, 0); ++i)
{
if (nToLang == AkelPad.SendMessage(aWnd[IDTOLANGCB][WND], CB_GETITEMDATA, i, 0))
{
oSelect.ToLang = i;
break;
}
}
}
}
AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_SETCURSEL, oSelect.FromLang, 0);
AkelPad.SendMessage(aWnd[IDTOLANGCB ][WND], CB_SETCURSEL, oSelect.ToLang, 0);
}
function SwitchLang(bSwitchText)
{
var nFromLang = AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_GETITEMDATA, oSelect.FromLang, 0);
var nToLang = AkelPad.SendMessage(aWnd[IDTOLANGCB ][WND], CB_GETITEMDATA, oSelect.ToLang, 0);
var nSelTarget;
var nSelSource;
var i;
for (i = 0; i < AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_GETCOUNT, 0, 0); ++i)
{
if (nToLang == AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_GETITEMDATA, i, 0))
{
oSelect.FromLang = i;
break;
}
}
if (nFromLang == -1) //Auto detect
{
oSelect.ToLang = 0;
if (nDetectLang >= 0)
{
for (i = 0; i < AkelPad.SendMessage(aWnd[IDTOLANGCB][WND], CB_GETCOUNT, 0, 0); ++i)
{
if (nDetectLang == AkelPad.SendMessage(aWnd[IDTOLANGCB][WND], CB_GETITEMDATA, i, 0))
{
oSelect.ToLang = i;
break;
}
}
}
}
else
{
for (i = 0; i < AkelPad.SendMessage(aWnd[IDTOLANGCB][WND], CB_GETCOUNT, 0, 0); ++i)
{
if (nFromLang == AkelPad.SendMessage(aWnd[IDTOLANGCB][WND], CB_GETITEMDATA, i, 0))
{
oSelect.ToLang = i;
break;
}
}
}
AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_SETCURSEL, oSelect.FromLang, 0);
AkelPad.SendMessage(aWnd[IDTOLANGCB ][WND], CB_SETCURSEL, oSelect.ToLang, 0);
ShowDetectLang(false);
if (bSwitchText)
{
oSys.Call("User32::GetWindowTextW", aWnd[IDTXTSOURCE][WND], lpBuffer, nBufSize);
sTarget = AkelPad.MemRead(lpBuffer, DT_UNICODE);
oSys.Call("User32::GetWindowTextW", aWnd[IDTXTTARGET][WND], lpBuffer, nBufSize);
sSource = AkelPad.MemRead(lpBuffer, DT_UNICODE).substr(0, aAPIs[oSelect.API].TextLen);
nSelTarget = AkelPad.SendMessage(aWnd[IDTXTSOURCE][WND], 0x00B0 /*EM_GETSEL*/, 0, 0);
nSelSource = AkelPad.SendMessage(aWnd[IDTXTTARGET][WND], 0x00B0 /*EM_GETSEL*/, 0, 0);
SetWndFontAndText(aWnd[IDTXTSOURCE][WND], 0, sSource);
SetWndFontAndText(aWnd[IDTXTTARGET][WND], 0, sTarget);
AkelPad.SendMessage(aWnd[IDTXTSOURCE][WND], 0x00B1 /*EM_SETSEL*/, LoWord(nSelSource), HiWord(nSelSource));
AkelPad.SendMessage(aWnd[IDTXTTARGET][WND], 0x00B1 /*EM_SETSEL*/, LoWord(nSelTarget), HiWord(nSelTarget));
}
}
function ShowDetectLang(bShow)
{
if (bShow)
{
if (nDetectLang >= 0)
SetWndFontAndText(aWnd[IDDETECTLANG][WND], 0, sTxtAutoDetect + ": " + aLangs[nDetectLang][1]);
}
else
{
nDetectLang = -1;
SetWndFontAndText(aWnd[IDDETECTLANG][WND], 0, "");
}
}
function SetEditWordWrap()
{
AkelPad.SendMessage(aWnd[IDTXTSOURCE][WND], 0x0CAA /*AEM_SETWORDWRAP*/, bWordWrap ? 1 /*AEWW_WORD*/ : 0 /*AEWW_NONE*/, 0);
AkelPad.SendMessage(aWnd[IDTXTTARGET][WND], 0x0CAA /*AEM_SETWORDWRAP*/, bWordWrap ? 1 /*AEWW_WORD*/ : 0 /*AEWW_NONE*/, 0);
}
function SetEditFont()
{
var hFont;
if (hEditWnd && bFontAP)
hFont = AkelPad.SendMessage(hEditWnd, 49 /*WM_GETFONT*/, 0, 0);
else if (bFontGUI)
hFont = hGuiFont;
else
hFont = ConvertFontFormat(aFont, 3, 2);
AkelPad.SendMessage(aWnd[IDTXTSOURCE][WND], 48 /*WM_SETFONT*/, hFont, 1);
AkelPad.SendMessage(aWnd[IDTXTTARGET][WND], 48 /*WM_SETFONT*/, hFont, 1);
}
function SetEditStyle(hWnd1, hWnd2)
{
AkelPad.SendMessage(hWndDlg, 11 /*WM_SETREDRAW*/, 0, 0);
oSys.Call("User32::SetWindowLongW", hWnd1, -20 /*GWL_EXSTYLE*/, 0);
oSys.Call("User32::SetWindowLongW", hWnd1, -16 /*GWL_STYLE*/, 0x50B11104);
oSys.Call("User32::SetWindowPos", hWnd1, 0, 0, 0, 0, 0, 0x37 /*SWP_FRAMECHANGED|SWP_NOACTIVATE|SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE*/);
if (bSourceWnd)
{
oSys.Call("User32::SetWindowLongW", hWnd2, -20 /*GWL_EXSTYLE*/, 0x20000 /*WS_EX_STATICEDGE*/);
oSys.Call("User32::SetWindowLongW", hWnd2, -16 /*GWL_STYLE*/, 0x50311104);
oSys.Call("User32::SetWindowPos", hWnd2, 0, 0, 0, 0, 0, 0x37 /*SWP_FRAMECHANGED|SWP_NOACTIVATE|SWP_NOZORDER|SWP_NOMOVE|SWP_NOSIZE*/);
}
AkelPad.SendMessage(hWndDlg, 11 /*WM_SETREDRAW*/, 1, 0);
oSys.Call("User32::InvalidateRect", hWndDlg, 0, 0);
}
function ShowSourceWindow()
{
if (bSourceWnd)
{
aWnd[IDTXTTARGET][WNDX] = aWnd[IDTXTTARGET][WNDX] + aWnd[IDTXTTARGET][WNDW] - aWnd[IDTXTSOURCE][WNDW];
aWnd[IDTXTTARGET][WNDW] = aWnd[IDTXTSOURCE][WNDW];
hFocus = aWnd[IDTXTSOURCE][WND];
}
else
{
aWnd[IDTXTTARGET][WNDW] = aWnd[IDTXTTARGET][WNDX] + aWnd[IDTXTTARGET][WNDW] - aWnd[IDTXTSOURCE][WNDX];
aWnd[IDTXTTARGET][WNDX] = aWnd[IDTXTSOURCE][WNDX];
hFocus = aWnd[IDTXTTARGET][WND];
}
oSys.Call("User32::ShowWindow", aWnd[IDSWITCHALL][WND], bSourceWnd);
oSys.Call("User32::ShowWindow", aWnd[IDLISTEN1 ][WND], bSourceWnd);
oSys.Call("User32::ShowWindow", aWnd[IDTXTSOURCE][WND], bSourceWnd);
oSys.Call("User32::SetFocus", hFocus);
ResizeWindow(hWndDlg)
}
function SetOpaqueLevel(hWnd, nLevel)
{
var lpBuf;
var nStyle;
if (nLevel < 0)
{
lpBuf = AkelPad.MemAlloc(1);
if (oSys.Call("User32::GetLayeredWindowAttributes", hWnd, 0, lpBuf, 0))
nOpaque = AkelPad.MemRead(lpBuf, DT_BYTE);
else
nOpaque = 255;
nOpaque += (nLevel == -1) ? 20 : -20;
AkelPad.MemFree(lpBuf);
}
if (nOpaque > 255)
nOpaque = 255;
else if (nOpaque < 55)
nOpaque = 55;
//WS_EX_LAYERED style
nStyle = oSys.Call("User32::GetWindowLongW", hWnd, -20 /*GWL_EXSTYLE*/);
if (! (nStyle & 0x00080000 /*WS_EX_LAYERED*/))
{
nStyle |= 0x00080000 /*WS_EX_LAYERED*/;
oSys.Call("User32::SetWindowLongW", hWnd, -20 /*GWL_EXSTYLE*/, nStyle);
}
oSys.Call("User32::SetLayeredWindowAttributes", hWnd, 0, nOpaque, 2 /*LWA_ALPHA*/);
}
function InsertTextToAP(hWnd, bEntireText)
{
if (hEditWnd)
{
var nTextLen;
if (bEntireText)
nTextLen = oSys.Call("User32::GetWindowTextW", hWnd, lpBuffer, nBufSize);
else
nTextLen = AkelPad.SendMessage(hWnd, 0x043E /*EM_GETSELTEXT*/, 0, lpBuffer);
if (nTextLen)
AkelPad.ReplaceSel(AkelPad.MemRead(lpBuffer, DT_UNICODE), 1);
}
}
function PasteTextFromAP(hWnd, bEntireText)
{
if (hEditWnd && (AkelPad.GetSelStart() != AkelPad.GetSelEnd()))
{
AkelPad.MemCopy(lpBuffer, AkelPad.GetSelText(3 /*"\r\n"*/).substr(0, nBufSize - 1).replace(/\r$/, ""), DT_UNICODE);
if (bEntireText)
AkelPad.SendMessage(hWnd, 0x00B1 /*EM_SETSEL*/, 0, -1);
AkelPad.SendMessage(hWnd, 0x00C2 /*EM_REPLACESEL*/, 1, lpBuffer);
}
}
function CopyEntireTextToCB(hWnd)
{
if (oSys.Call("User32::GetWindowTextW", hWnd, lpBuffer, nBufSize))
AkelPad.SetClipboardText(AkelPad.MemRead(lpBuffer, DT_UNICODE));
}
function PasteEntireTextFromCB(hWnd)
{
if (AkelPad.GetClipboardText())
{
AkelPad.SendMessage(hWnd, 0x00B1 /*EM_SETSEL*/, 0, -1);
AkelPad.SendMessage(hWnd, 0x0302 /*WM_PASTE*/, 0, 0);
}
}
function DeleteEntireText(hWnd)
{
AkelPad.SendMessage(hWnd, 0x00B1 /*EM_SETSEL*/, 0, -1);
AkelPad.SendMessage(hWnd, 0x0303 /*WM_CLEAR*/, 0, 0);
}
|
Last edited by KDJ on Fri May 03, 2013 11:55 am; edited 30 times in total |
|
| Back to top |
|
 |
KDJ
Joined: 06 Mar 2010 Posts: 1068 Location: Poland
|
Posted: Wed May 25, 2011 6:40 pm Post subject: |
|
|
Translates text via Google, MS Bing and Yandex - Part Two.
In the next post are the files with the translated interface.
Translator_part2.js
| Code: | function ContextMenu(hWnd, nPosParam)
{
var MF_STRING = 0x0;
var MF_GRAYED = 0x1;
var MF_POPUP = 0x10;
var MF_SEPARATOR = 0x800;
var hMenu = oSys.Call("User32::CreatePopupMenu");
var hMenu1 = oSys.Call("User32::CreatePopupMenu");
var hMenu2 = oSys.Call("User32::CreatePopupMenu");
var oRect;
var lpPoint;
var nPosX;
var nPosY;
var nWnd;
var nCmd;
//Sub menu source text (Entire text)
oSys.Call("User32::AppendMenuW", hMenu1,
oSys.Call("User32::GetWindowTextLengthW", aWnd[IDTXTSOURCE][WND]) ? MF_STRING : MF_GRAYED,
(1 << 8) | 21, sTxtCut + "\tAlt+X");
oSys.Call("User32::AppendMenuW", hMenu1,
oSys.Call("User32::GetWindowTextLengthW", aWnd[IDTXTSOURCE][WND]) ? MF_STRING : MF_GRAYED,
(1 << 8) | 22, sTxtCopyCB + "\tAlt+C");
oSys.Call("User32::AppendMenuW", hMenu1,
AkelPad.SendMessage(aWnd[IDTXTSOURCE][WND], 0x0432 /*EM_CANPASTE*/, 0, 0) ? MF_STRING : MF_GRAYED,
(1 << 8) | 23, sTxtPasteCB + "\tAlt+V");
oSys.Call("User32::AppendMenuW", hMenu1,
oSys.Call("User32::GetWindowTextLengthW", aWnd[IDTXTSOURCE][WND]) ? MF_STRING : MF_GRAYED,
(1 << 8) | 24, sTxtDelete + "\tAlt+Del");
oSys.Call("User32::AppendMenuW", hMenu1, MF_SEPARATOR, 0, 0);
oSys.Call("User32::AppendMenuW", hMenu1,
(hEditWnd && oSys.Call("User32::GetWindowTextLengthW", aWnd[IDTXTSOURCE][WND])) ? MF_STRING : MF_GRAYED,
(1 << 8) | 25, sTxtInsertAP + "\tShift+Alt+C");
oSys.Call("User32::AppendMenuW", hMenu1,
AkelPad.SendMessage(hEditWnd, 3125 /*AEM_GETSEL*/, 0, 0) ? MF_STRING : MF_GRAYED,
(1 << 8) | 26, sTxtPasteAP + "\tShift+Alt+V");
oSys.Call("User32::AppendMenuW", hMenu1, MF_SEPARATOR, 0, 0);
oSys.Call("User32::AppendMenuW", hMenu1,
oSys.Call("User32::GetWindowTextLengthW", aWnd[IDTXTSOURCE][WND]) ? MF_STRING : MF_GRAYED,
(1 << 8) | 27, sTxtListen + "\tCtrl+L");
oSys.Call("User32::AppendMenuW", hMenu1, MF_SEPARATOR, 0, 0);
oSys.Call("User32::AppendMenuW", hMenu1,
oSys.Call("User32::GetWindowTextLengthW", aWnd[IDTXTSOURCE][WND]) ? MF_STRING : MF_GRAYED,
(1 << 8) | 28, sTxtTranslate + "\tCtrl+Enter");
oSys.Call("User32::AppendMenuW", hMenu1,
oSys.Call("User32::GetWindowTextLengthW", aWnd[IDTXTSOURCE][WND]) ? MF_STRING : MF_GRAYED,
(1 << 8) | 29, sTxtTranslateP + "\tAlt+Enter");
//Sub menu target text (Entire text)
oSys.Call("User32::AppendMenuW", hMenu2,
oSys.Call("User32::GetWindowTextLengthW", aWnd[IDTXTTARGET][WND]) ? MF_STRING : MF_GRAYED,
(2 << 8) | 21, sTxtCut + "\tAlt+X");
oSys.Call("User32::AppendMenuW", hMenu2,
oSys.Call("User32::GetWindowTextLengthW", aWnd[IDTXTTARGET][WND]) ? MF_STRING : MF_GRAYED,
(2 << 8) | 22, sTxtCopyCB + "\tAlt+C");
oSys.Call("User32::AppendMenuW", hMenu2,
AkelPad.SendMessage(aWnd[IDTXTTARGET][WND], 0x0432 /*EM_CANPASTE*/, 0, 0) ? MF_STRING : MF_GRAYED,
(2 << 8) | 23, sTxtPasteCB + "\tAlt+V");
oSys.Call("User32::AppendMenuW", hMenu2,
oSys.Call("User32::GetWindowTextLengthW", aWnd[IDTXTTARGET][WND]) ? MF_STRING : MF_GRAYED,
(2 << 8) | 24, sTxtDelete + "\tAlt+Del");
oSys.Call("User32::AppendMenuW", hMenu2, MF_SEPARATOR, 0, 0);
oSys.Call("User32::AppendMenuW", hMenu2,
(hEditWnd && oSys.Call("User32::GetWindowTextLengthW", aWnd[IDTXTTARGET][WND])) ? MF_STRING : MF_GRAYED,
(2 << 8) | 25, sTxtInsertAP + "\tShift+Alt+C");
oSys.Call("User32::AppendMenuW", hMenu2,
AkelPad.SendMessage(hEditWnd, 3125 /*AEM_GETSEL*/, 0, 0) ? MF_STRING : MF_GRAYED,
(2 << 8) | 26, sTxtPasteAP + "\tShift+Alt+V");
oSys.Call("User32::AppendMenuW", hMenu2, MF_SEPARATOR, 0, 0);
oSys.Call("User32::AppendMenuW", hMenu2,
oSys.Call("User32::GetWindowTextLengthW", aWnd[IDTXTTARGET][WND]) ? MF_STRING : MF_GRAYED,
(2 << 8) | 27, sTxtListen + "\tCtrl+L");
if (nPosParam == -2) //Context menu for button Options
{
oRect = new Object();
GetWindowPos(hWnd, oRect);
nPosX = oRect.X + oRect.W;
nPosY = oRect.Y + oRect.H;
if (bSourceWnd)
oSys.Call("User32::AppendMenuW", hMenu, MF_POPUP, hMenu1, sTxtSource);
oSys.Call("User32::AppendMenuW", hMenu, MF_POPUP, hMenu2, sTxtTarget);
oSys.Call("User32::AppendMenuW", hMenu, MF_SEPARATOR, 0, 0);
oSys.Call("User32::AppendMenuW", hMenu, MF_STRING, (1 << 8) | 41, sTxtSettings + "\tAlt+S");
}
else
{
if (nPosParam == -1) //Context menu from keyboard
{
lpPoint = AkelPad.MemAlloc(8); //sizeof(POINT)
oSys.Call("User32::GetCaretPos", lpPoint);
oSys.Call("User32::ClientToScreen", hWnd, lpPoint);
nPosX = AkelPad.MemRead(lpPoint, DT_DWORD);
nPosY = AkelPad.MemRead(lpPoint + 4, DT_DWORD) + AkelPad.SendMessage(hWnd, 3188 /*AEM_GETCHARSIZE*/, 0 /*AECS_HEIGHT*/, 0);
AkelPad.MemFree(lpPoint);
}
else //Right click
{
nPosX = LoWord(nPosParam);
nPosY = HiWord(nPosParam);
}
nWnd = (hWnd == aWnd[IDTXTSOURCE][WND]) ? 1 : 2;
oSys.Call("User32::AppendMenuW", hMenu,
AkelPad.SendMessage(hWnd, 0x00C6 /*EM_CANUNDO*/, 0, 0) ? MF_STRING : MF_GRAYED,
(nWnd << 8) | 1, sTxtUndo + "\tCtrl+Z");
oSys.Call("User32::AppendMenuW", hMenu,
AkelPad.SendMessage(hWnd, 0x0455 /*EM_CANREDO*/, 0, 0) ? MF_STRING : MF_GRAYED,
(nWnd << 8) | 2, sTxtRedo + "\tCtrl+Shift+Z");
oSys.Call("User32::AppendMenuW", hMenu, MF_SEPARATOR, 0, 0);
oSys.Call("User32::AppendMenuW", hMenu,
AkelPad.SendMessage(hWnd, 3125 /*AEM_GETSEL*/, 0, 0) ? MF_STRING : MF_GRAYED,
(nWnd << 8) | 3, sTxtCut + "\tCtrl+X");
oSys.Call("User32::AppendMenuW", hMenu,
AkelPad.SendMessage(hWnd, 3125 /*AEM_GETSEL*/, 0, 0) ? MF_STRING : MF_GRAYED,
(nWnd << 8) | 4, sTxtCopyCB + "\tCtrl+C");
oSys.Call("User32::AppendMenuW", hMenu,
AkelPad.SendMessage(hWnd, 0x0432 /*EM_CANPASTE*/, 0, 0) ? MF_STRING : MF_GRAYED,
(nWnd << 8) | 5, sTxtPasteCB + "\tCtrl+V");
oSys.Call("User32::AppendMenuW", hMenu,
AkelPad.SendMessage(hWnd, 3125 /*AEM_GETSEL*/, 0, 0) ? MF_STRING : MF_GRAYED,
(nWnd << 8) | 6, sTxtDelete + "\tDel");
oSys.Call("User32::AppendMenuW", hMenu,
oSys.Call("User32::GetWindowTextLengthW", hWnd) ? MF_STRING : MF_GRAYED,
(nWnd << 8) | 7, sTxtSelectAll + "\tCtrl+A");
oSys.Call("User32::AppendMenuW", hMenu, MF_SEPARATOR, 0, 0);
oSys.Call("User32::AppendMenuW", hMenu,
(hEditWnd && AkelPad.SendMessage(hWnd, 3125 /*AEM_GETSEL*/, 0, 0)) ? MF_STRING : MF_GRAYED,
(nWnd << 8) | 8, sTxtInsertAP + "\tCtrl+Shift+C");
oSys.Call("User32::AppendMenuW", hMenu,
AkelPad.SendMessage(hEditWnd, 3125 /*AEM_GETSEL*/, 0, 0) ? MF_STRING : MF_GRAYED,
(nWnd << 8) | 9, sTxtPasteAP + "\tCtrl+Shift+V");
oSys.Call("User32::AppendMenuW", hMenu, MF_SEPARATOR, 0, 0);
oSys.Call("User32::AppendMenuW", hMenu,
AkelPad.SendMessage(hWnd, 3125 /*AEM_GETSEL*/, 0, 0) ? MF_STRING : MF_GRAYED,
(nWnd << 8) | 10, sTxtListen + "\tCtrl+Shift+L");
if (nWnd == 1)
{
oSys.Call("User32::AppendMenuW", hMenu, MF_SEPARATOR, 0, 0);
oSys.Call("User32::AppendMenuW", hMenu,
AkelPad.SendMessage(hWnd, 3125 /*AEM_GETSEL*/, 0, 0) ? MF_STRING : MF_GRAYED,
(nWnd << 8) | 11, sTxtTranslate + "\tShift+Enter");
oSys.Call("User32::AppendMenuW", hMenu,
AkelPad.SendMessage(hWnd, 3125 /*AEM_GETSEL*/, 0, 0) ? MF_STRING : MF_GRAYED,
(nWnd << 8) | 12, sTxtTranslateP + "\tShift+Alt+Enter");
}
oSys.Call("User32::AppendMenuW", hMenu, MF_SEPARATOR, 0, 0);
oSys.Call("User32::AppendMenuW", hMenu, MF_POPUP, (nWnd == 1) ? hMenu1 : hMenu2, sTxtEntireText);
}
nCmd = oSys.Call("User32::TrackPopupMenu", hMenu, (nPosParam > -2)
? 0x180 /*TPM_NONOTIFY|TPM_RETURNCMD*/
: 0x188 /*TPM_RIGHTALIGN|TPM_NONOTIFY|TPM_RETURNCMD*/,
nPosX, nPosY, 0, hWndDlg, 0);
oSys.Call("User32::DestroyMenu", hMenu);
oSys.Call("User32::DestroyMenu", hMenu1);
oSys.Call("User32::DestroyMenu", hMenu2);
nWnd = nCmd >> 8;
nCmd = nCmd & 0xFF;
hWnd = (nWnd == 1) ? aWnd[IDTXTSOURCE][WND] : aWnd[IDTXTTARGET][WND];
//Selected text
if (nCmd == 1)
AkelPad.SendMessage(hWnd, 0x00C7 /*EM_UNDO*/, 0, 0);
else if (nCmd == 2)
AkelPad.SendMessage(hWnd, 0x0454 /*EM_REDO*/, 0, 0);
else if (nCmd == 3)
AkelPad.SendMessage(hWnd, 0x0300 /*WM_CUT*/, 0, 0);
else if (nCmd == 4)
AkelPad.SendMessage(hWnd, 0x0301 /*WM_COPY*/, 0, 0);
else if (nCmd == 5)
AkelPad.SendMessage(hWnd, 0x0302 /*WM_PASTE*/, 0, 0);
else if (nCmd == 6)
AkelPad.SendMessage(hWnd, 0x0303 /*WM_CLEAR*/, 0, 0);
else if (nCmd == 7)
AkelPad.SendMessage(hWnd, 0x00B1 /*EM_SETSEL*/, 0, -1);
else if (nCmd == 8)
InsertTextToAP(hWnd, 0);
else if (nCmd == 9)
PasteTextFromAP(hWnd, 0);
else if (nCmd == 10)
Listen(hWnd, 1);
else if (nCmd == 11)
Translate(1);
else if (nCmd == 12)
Translate(1, 1);
//Entire text
else if (nCmd == 21)
{
CopyEntireTextToCB(hWnd);
DeleteEntireText(hWnd);
}
else if (nCmd == 22)
CopyEntireTextToCB(hWnd);
else if (nCmd == 23)
PasteEntireTextFromCB(hWnd);
else if (nCmd == 24)
DeleteEntireText(hWnd);
else if (nCmd == 25)
InsertTextToAP(hWnd, 1);
else if (nCmd == 26)
PasteTextFromAP(hWnd, 1);
else if (nCmd == 27)
Listen(hWnd, 0);
else if (nCmd == 28)
Translate();
else if (nCmd == 29)
Translate(0, 1);
//Settings
else if (nCmd == 41)
Settings();
}
function Settings()
{
var oRect = {};
var nW = 440;
var nH = 350;
var nX, nY;
var hWndSet;
GetWindowPos(hWndDlg, oRect);
nX = oRect.X + (oRect.W - nW) / 2;
nY = oRect.Y + (oRect.H - nH) / 2;
hWndSet = oSys.Call("User32::CreateWindowExW",
0, //dwExStyle
sClassName, //lpClassName
sTxtSettings, //lpWindowName
0x90C80000, //WS_VISIBLE|WS_POPUP|WS_CAPTION|WS_SYSMENU
nX, //x
nY, //y
nW, //nWidth
nH, //nHeight
hWndDlg, //hWndParent
0, //ID
hInstanceDLL, //hInstance
DialogCallbackSet); //lpParam
if (hWndSet)
{
oSys.Call("User32::EnableWindow", hMainWnd, 0);
oSys.Call("User32::EnableWindow", hWndDlg, 0);
}
}
function DialogCallbackSet(hWnd, uMsg, wParam, lParam)
{
var i;
if (uMsg == 1) //WM_CREATE
{
for (i = 1100; i < aWndSet.length; ++i)
{
aWndSet[i][WND] = oSys.Call("User32::CreateWindowExW",
0, //dwExStyle
aWndSet[i][WNDCLASS], //lpClassName
0, //lpWindowName
aWndSet[i][WNDSTY], //dwStyle
aWndSet[i][WNDX], //x
aWndSet[i][WNDY], //y
aWndSet[i][WNDW], //nWidth
aWndSet[i][WNDH], //nHeight
hWnd, //hWndParent
i, //ID
hInstanceDLL, //hInstance
0); //lpParam
SetWndFontAndText(aWndSet[i][WND], hGuiFont, aWndSet[i][WNDTXT]);
}
AkelPad.SendMessage(hWnd, 0x0080 /*WM_SETICON*/, 0 /*ICON_SMALL*/, hIcon);
AkelPad.SendMessage(aWndSet[IDAPIKEY1][WND], 197 /*EM_SETLIMITTEXT*/, 128, 0);
SetWndFontAndText(aWndSet[IDAPIKEY1][WND], 0, aAPIs[1].APIkeyP);
FillComboInterface();
//Check buttons
AkelPad.SendMessage(aWndSet[IDSOURCEINCB][WND], 241 /*BM_SETCHECK*/, bSourceInCB || (! hEditWnd), 0);
AkelPad.SendMessage(aWndSet[IDSOURCEWND ][WND], 241 /*BM_SETCHECK*/, bSourceWnd, 0);
AkelPad.SendMessage(aWndSet[IDLOADTEXT ][WND], 241 /*BM_SETCHECK*/, bLoadText, 0);
AkelPad.SendMessage(aWndSet[IDIMMEDIATE ][WND], 241 /*BM_SETCHECK*/, bImmediate, 0);
AkelPad.SendMessage(aWndSet[IDWORDWRAP ][WND], 241 /*BM_SETCHECK*/, bWordWrap, 0);
AkelPad.SendMessage(aWndSet[IDFONTAP ][WND], 241 /*BM_SETCHECK*/, bFontAP && hEditWnd, 0);
AkelPad.SendMessage(aWndSet[IDFONTGUI ][WND], 241 /*BM_SETCHECK*/, bFontGUI, 0);
AkelPad.SendMessage(aWndSet[IDSORTNAME - bSortCode][WND], 241 /*BM_SETCHECK*/, 1, 0);
oSys.Call("User32::EnableWindow", aWndSet[IDSOURCEINCB][WND], hEditWnd);
oSys.Call("User32::EnableWindow", aWndSet[IDLOADTEXT ][WND], bSourceWnd);
oSys.Call("User32::EnableWindow", aWndSet[IDIMMEDIATE ][WND], (! bSourceWnd) || (bSourceWnd && bLoadText));
oSys.Call("User32::EnableWindow", aWndSet[IDFONTAP ][WND], hEditWnd);
oSys.Call("User32::EnableWindow", aWndSet[IDFONT ][WND], ((! bFontAP) || (! hEditWnd)) && (! bFontGUI));
hFocusSet = aWndSet[IDINTERFACECB][WND];
}
else if ((uMsg == 6 /*WM_ACTIVATE*/) && (! wParam))
hFocusSet = oSys.Call("User32::GetFocus");
else if (uMsg == 7) //WM_SETFOCUS
oSys.Call("User32::SetFocus", hFocusSet);
else if (uMsg == 256) //WM_KEYDOWN
{
if (bCloseCB)
{
if ((wParam == 13 /*VK_RETURN*/) && (oSys.Call("User32::GetFocus") != aWndSet[IDFONT][WND]))
oSys.Call("User32::PostMessageW", hWnd, 273 /*WM_COMMAND*/, IDOK, 0);
else if (wParam == 27 /*VK_ESCAPE*/)
oSys.Call("User32::PostMessageW", hWnd, 16 /*WM_CLOSE*/, 0, 0);
}
}
else if (uMsg == 273) //WM_COMMAND
{
var nLowParam = LoWord(wParam);
var nHiwParam = HiWord(wParam);
bCloseCB = 1;
if (nLowParam == IDINTERFACECB)
{
if (nHiwParam == CBN_CLOSEUP)
bCloseCB = 0;
}
else if ((nLowParam == IDSOURCEWND) || (nLowParam == IDLOADTEXT))
{
oSys.Call("User32::EnableWindow", aWndSet[IDLOADTEXT][WND],
AkelPad.SendMessage(aWndSet[IDSOURCEWND][WND], 240 /*BM_GETCHECK*/, 0, 0));
oSys.Call("User32::EnableWindow", aWndSet[IDIMMEDIATE][WND],
(! AkelPad.SendMessage(aWndSet[IDSOURCEWND][WND], 240 /*BM_GETCHECK*/, 0, 0)) ||
(AkelPad.SendMessage(aWndSet[IDSOURCEWND][WND], 240 /*BM_GETCHECK*/, 0, 0) &&
AkelPad.SendMessage(aWndSet[IDLOADTEXT][WND], 240 /*BM_GETCHECK*/, 0, 0)));
}
else if (nLowParam == IDFONTAP)
{
if (AkelPad.SendMessage(aWndSet[IDFONTAP][WND], 240 /*BM_GETCHECK*/, 0, 0))
AkelPad.SendMessage(aWndSet[IDFONTGUI][WND], 241 /*BM_SETCHECK*/, 0, 0);
oSys.Call("User32::EnableWindow", aWndSet[IDFONT][WND],
(! AkelPad.SendMessage(aWndSet[IDFONTAP][WND], 240 /*BM_GETCHECK*/, 0, 0)) &&
(! AkelPad.SendMessage(aWndSet[IDFONTGUI][WND], 240 /*BM_GETCHECK*/, 0, 0)));
}
else if (nLowParam == IDFONTGUI)
{
if (AkelPad.SendMessage(aWndSet[IDFONTGUI][WND], 240 /*BM_GETCHECK*/, 0, 0) && hEditWnd)
AkelPad.SendMessage(aWndSet[IDFONTAP][WND], 241 /*BM_SETCHECK*/, 0, 0);
oSys.Call("User32::EnableWindow", aWndSet[IDFONT][WND],
((! AkelPad.SendMessage(aWndSet[IDFONTAP][WND], 240 /*BM_GETCHECK*/, 0, 0)) || (! hEditWnd)) &&
(! AkelPad.SendMessage(aWndSet[IDFONTGUI][WND], 240 /*BM_GETCHECK*/, 0, 0)));
}
else if (nLowParam == IDFONT)
{
var vCF;
if (vCF = ChooseFont(hWnd, aFont))
{
aFont = vCF;
oSys.Call("User32::SetWindowTextW", aWndSet[IDFONT][WND], aWndSet[IDFONT][WNDTXT] = aFont.toString());
}
oSys.Call("User32::SetFocus", aWndSet[IDFONT][WND]);
}
else if (nLowParam == IDOK)
{
//Change interface language
var nCurSel = AkelPad.SendMessage(aWndSet[IDINTERFACECB][WND], CB_GETCURSEL, 0, 0);
var sLangName = "";
if (AkelPad.SendMessage(aWndSet[IDINTERFACECB][WND], CB_GETITEMDATA, nCurSel, 0) != -1)
{
AkelPad.SendMessage(aWndSet[IDINTERFACECB][WND], 0x0148 /*CB_GETLBTEXT*/, nCurSel, lpBuffer);
sLangName = AkelPad.MemRead(lpBuffer, DT_UNICODE);
}
if (sLangName.toUpperCase() != sLanguage.toUpperCase())
{
sLanguage = sLangName;
ReadInterfaceLang();
SetInterfaceLangToWndDef();
SetWndFontAndText(hWndDlg, hGuiFont, sTxtCaption);
for (i = IDUSE; i <= IDOPTIONS; ++i)
SetWndFontAndText(aWnd[i][WND], hGuiFont, aWnd[i][WNDTXT]);
ShowDetectLang(true);
}
if (hEditWnd)
{
bSourceInCB = AkelPad.SendMessage(aWndSet[IDSOURCEINCB][WND], 240 /*BM_GETCHECK*/, 0, 0);
bFontAP = AkelPad.SendMessage(aWndSet[IDFONTAP ][WND], 240 /*BM_GETCHECK*/, 0, 0);
}
bSourceWnd = AkelPad.SendMessage(aWndSet[IDSOURCEWND][WND], 240 /*BM_GETCHECK*/, 0, 0);
bLoadText = AkelPad.SendMessage(aWndSet[IDLOADTEXT ][WND], 240 /*BM_GETCHECK*/, 0, 0);
bImmediate = AkelPad.SendMessage(aWndSet[IDIMMEDIATE][WND], 240 /*BM_GETCHECK*/, 0, 0);
bWordWrap = AkelPad.SendMessage(aWndSet[IDWORDWRAP ][WND], 240 /*BM_GETCHECK*/, 0, 0);
bFontGUI = AkelPad.SendMessage(aWndSet[IDFONTGUI ][WND], 240 /*BM_GETCHECK*/, 0, 0);
bSortCode = AkelPad.SendMessage(aWndSet[IDSORTCODE ][WND], 240 /*BM_GETCHECK*/, 0, 0);
SetEditWordWrap();
SetEditFont();
ShowSourceWindow();
FillComboLangs(AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_GETITEMDATA, oSelect.FromLang, 0),
AkelPad.SendMessage(aWnd[IDTOLANGCB ][WND], CB_GETITEMDATA, oSelect.ToLang, 0));
oSys.Call("User32::GetWindowTextW", aWndSet[IDAPIKEY1][WND], lpBuffer, nBufSize);
aAPIs[1].APIkeyP = AkelPad.MemRead(lpBuffer, DT_UNICODE);
oSys.Call("User32::PostMessageW", hWnd, 16 /*WM_CLOSE*/, 0, 0);
}
else if (nLowParam == IDCANCEL)
oSys.Call("User32::PostMessageW", hWnd, 16 /*WM_CLOSE*/, 0, 0);
}
else if (uMsg == 16) //WM_CLOSE
{
oSys.Call("User32::EnableWindow", hMainWnd, 1);
oSys.Call("User32::EnableWindow", hWndDlg, 1);
oSys.Call("User32::DestroyWindow", hWnd);
}
return 0;
}
function FillComboInterface()
{
var sScriptName = WScript.ScriptName.substring(0, WScript.ScriptName.lastIndexOf(".")) + "_";
var sTemplate = WScript.ScriptFullName.substring(0, WScript.ScriptFullName.lastIndexOf(".")) + "_*.lng";
var hFindFile = oSys.Call("kernel32::FindFirstFileW", sTemplate, lpBuffer);
var sLangFile;
var sLangName;
var nPos;
AkelPad.MemCopy(lpBuffer, "English (built-in)", DT_UNICODE);
nPos = AkelPad.SendMessage(aWndSet[IDINTERFACECB][WND], CB_ADDSTRING, 0, lpBuffer);
AkelPad.SendMessage(aWndSet[IDINTERFACECB][WND], CB_SETITEMDATA, nPos, -1);
AkelPad.SendMessage(aWndSet[IDINTERFACECB][WND], CB_SETCURSEL, nPos, 0);
if (hFindFile != -1) //INVALID_HANDLE_VALUE
{
do
{
sLangFile = AkelPad.MemRead(lpBuffer + 44 /*offsetof(WIN32_FIND_DATAW, cFileName)*/, DT_UNICODE);
sLangName = sLangFile.substring(sScriptName.length, sLangFile.lastIndexOf("."));
if (sLangName)
{
AkelPad.MemCopy(lpBuffer, sLangName, DT_UNICODE);
nPos = AkelPad.SendMessage(aWndSet[IDINTERFACECB][WND], CB_ADDSTRING, 0, lpBuffer);
if (sLangName.toUpperCase() == sLanguage.toUpperCase())
AkelPad.SendMessage(aWndSet[IDINTERFACECB][WND], CB_SETCURSEL, nPos, 0);
}
}
while(oSys.Call("kernel32::FindNextFileW", hFindFile, lpBuffer));
}
oSys.Call("kernel32::FindClose", hFindFile);
}
function ChooseFont(hWndOwn, aFontIni)
{
var nCFSize = 60; //sizeof(CHOOSEFONT)
var lpCF = AkelPad.MemAlloc(nCFSize);
var lpLF = ConvertFontFormat(aFontIni, 3, 1);
var lpCallback = oSys.RegisterCallback(0, CFHookProcCallback, 4);
var vResult = 0;
AkelPad.MemCopy(lpCF , nCFSize, DT_DWORD); //lStructSize
AkelPad.MemCopy(lpCF + 4, hWndOwn, DT_DWORD); //hwndOwner
AkelPad.MemCopy(lpCF + 12, lpLF, DT_DWORD); //lpLogFont
AkelPad.MemCopy(lpCF + 20, 0x00010049, DT_DWORD); //Flags=CF_ENABLEHOOK|CF_FORCEFONTEXIST|CF_INITTOLOGFONTSTRUCT|CF_SCREENFONTS
AkelPad.MemCopy(lpCF + 32, lpCallback, DT_DWORD); //lpfnHook
if (oSys.Call("Comdlg32::ChooseFontW", lpCF))
vResult = ConvertFontFormat(lpLF, 1, 3);
oSys.UnregisterCallback(lpCallback);
AkelPad.MemFree(lpCF);
AkelPad.MemFree(lpLF);
return vResult;
}
function CFHookProcCallback(hWnd, uMsg, wParam, lParam)
{
if (uMsg == 272 /*WM_INITDIALOG*/)
{
var hWndOwn = AkelPad.MemRead(lParam + 4, DT_DWORD);
var oRectWnd = {};
var oRectOwn = {};
var oRectDesk = {};
//center dialog
GetWindowPos(hWnd, oRectWnd);
GetWindowPos(hWndOwn, oRectOwn);
GetWindowPos(oSys.Call("User32::GetDesktopWindow"), oRectDesk);
oRectWnd.X = oRectOwn.X + (oRectOwn.W - oRectWnd.W) / 2;
oRectWnd.Y = oRectOwn.Y + (oRectOwn.H - oRectWnd.H) / 2;
if ((oRectWnd.X + oRectWnd.W) > oRectDesk.W)
oRectWnd.X = oRectDesk.W - oRectWnd.W;
if (oRectWnd.X < 0)
oRectWnd.X = 0;
if ((oRectWnd.Y + oRectWnd.H) > oRectDesk.H)
oRectWnd.Y = oRectDesk.H - oRectWnd.H;
if (oRectWnd.Y < 0)
oRectWnd.Y = 0;
oSys.Call("User32::MoveWindow", hWnd, oRectWnd.X, oRectWnd.Y, oRectWnd.W, oRectWnd.H, 0);
}
return 0;
}
//---------------------------------------------------
// vFont - pointer to LOGFONTW, font handle, or array
// nInType - vFont type,
// nRetType - vResult type:
// 1 - pointer to LOGFONTW structure
// 2 - handle to font
// 3 - array [sFontName, nFontStyle, nFontSize]
//---------------------------------------------------
function ConvertFontFormat(vFont, nInType, nRetType)
{
var nLFSize = 28 + 32 * 2; //sizeof(LOGFONTW)
var lpLF = AkelPad.MemAlloc(nLFSize);
var hFont;
var hDC;
var nHeight;
var nWeight;
var bItalic;
var vRetVal;
var i;
if (nInType == 1)
{
for (i = 0; i < nLFSize; ++i)
AkelPad.MemCopy(lpLF + i, AkelPad.MemRead(vFont + i, DT_BYTE), DT_BYTE);
}
else if (nInType == 2)
{
if (! vFont)
vFont = oSys.Call("Gdi32::GetStockObject", 13 /*SYSTEM_FONT*/);
oSys.Call("Gdi32::GetObjectW", vFont, nLFSize, lpLF);
}
else if (nInType == 3)
{
hDC = oSys.Call("User32::GetDC", hMainWnd);
nHeight = -oSys.Call("Kernel32::MulDiv", vFont[2], oSys.Call("Gdi32::GetDeviceCaps", hDC, 90 /*LOGPIXELSY*/), 72);
oSys.Call("User32::ReleaseDC", hMainWnd, hDC);
nWeight = 400;
bItalic = 0;
if ((vFont[1] == 2) || (vFont[1] == 4))
nWeight = 700;
if (vFont[1] > 2)
bItalic = 1;
AkelPad.MemCopy(lpLF , nHeight, DT_DWORD); //lfHeight
AkelPad.MemCopy(lpLF + 16, nWeight, DT_DWORD); //lfWeight
AkelPad.MemCopy(lpLF + 20, bItalic, DT_BYTE); //lfItalic
AkelPad.MemCopy(lpLF + 28, vFont[0], DT_UNICODE); //lfFaceName
}
if (nRetType == 1)
vRetVal = lpLF;
else if (nRetType == 2)
{
vRetVal = oSys.Call("Gdi32::CreateFontIndirectW", lpLF);
AkelPad.MemFree(lpLF);
}
else if (nRetType == 3)
{
vRetVal = [];
vRetVal[0] = AkelPad.MemRead(lpLF + 28, DT_UNICODE); //lfFaceName
nWeight = AkelPad.MemRead(lpLF + 16, DT_DWORD); //lfWeight
bItalic = AkelPad.MemRead(lpLF + 20, DT_BYTE); //lfItalic
if (nWeight < 600)
vRetVal[1] = 1;
else
vRetVal[1] = 2;
if (bItalic)
vRetVal[1] += 2;
hDC = oSys.Call("User32::GetDC", hMainWnd);
nHeight = AkelPad.MemRead(lpLF, DT_DWORD); //lfHeight
vRetVal[2] = -oSys.Call("Kernel32::MulDiv", nHeight, 72, oSys.Call("Gdi32::GetDeviceCaps", hDC, 90 /*LOGPIXELSY*/));
oSys.Call("User32::ReleaseDC", hMainWnd, hDC);
AkelPad.MemFree(lpLF);
}
return vRetVal;
}
function GetAkelPadObject()
{
if (typeof AkelPad == "undefined")
{
var oError;
try
{
AkelPad = new ActiveXObject("AkelPad.Document");
}
catch (oError)
{
WScript.Echo(sTxtRegScripts);
WScript.Quit();
}
}
}
function ReadIniFile()
{
var oFile;
var oError;
if (oFSO.FileExists(sIniFile))
{
oFile = oFSO.OpenTextFile(sIniFile, 1, false, -1);
try
{
eval(oFile.ReadAll());
}
catch (oError)
{
}
oFile.Close();
}
}
function WriteIniFile()
{
var oFile = oFSO.OpenTextFile(sIniFile, 2, true, -1);
var sIniTxt;
var i;
oWndPos.Max = oSys.Call("User32::IsZoomed", hWndDlg);
oSys.Call("User32::GetWindowTextW", aWnd[IDTXTSOURCE][WND], lpBuffer, nBufSize);
sSource = AkelPad.MemRead(lpBuffer, DT_UNICODE).replace(/[\\"]/g, "\\$&").replace(/\r/g, "\\r").replace(/\n/g, "\\n");
oSys.Call("User32::GetWindowTextW", aWnd[IDTXTTARGET][WND], lpBuffer, nBufSize);
sTarget = AkelPad.MemRead(lpBuffer, DT_UNICODE).replace(/[\\"]/g, "\\$&").replace(/\r/g, "\\r").replace(/\n/g, "\\n");
sIniTxt = 'nOpaque=' + nOpaque + ';\r\n' +
'bSourceInCB=' + bSourceInCB + ';\r\n' +
'bSourceWnd=' + bSourceWnd + ';\r\n' +
'bLoadText=' + bLoadText + ';\r\n' +
'bImmediate=' + bImmediate + ';\r\n' +
'bWordWrap=' + bWordWrap + ';\r\n' +
'bFontAP=' + bFontAP + ';\r\n' +
'bFontGUI=' + bFontGUI + ';\r\n' +
'aFont=["' + aFont[0] + '",' + aFont[1] + ',' + aFont[2] + '];\r\n' +
'bSortCode=' + bSortCode + ';\r\n' +
'nDetectLang=' + nDetectLang + ';\r\n' +
'sSource="' + sSource + '";\r\n' +
'sTarget="' + sTarget + '";\r\n' +
'sLanguage="' + sLanguage + '";\r\n';
for (i = 0; i < aAPIs.length; ++i)
sIniTxt += 'aAPIs[' + i + '].APIkeyP="' + aAPIs[i].APIkeyP + '";\r\n';
for (i in oSelect)
sIniTxt += 'oSelect.' + i + '=' + oSelect[i] + ';\r\n';
for (i in oWndPos)
sIniTxt += 'oWndPos.' + i + '=' + oWndPos[i] + ';\r\n';
oFile.Write(sIniTxt);
oFile.Close();
}
function ReadInterfaceLang()
{
if (sLanguage)
{
var sLangFile = WScript.ScriptFullName.substring(0, WScript.ScriptFullName.lastIndexOf(".")) + "_" + sLanguage + ".lng";
var oFile;
var oError;
if (oFSO.FileExists(sLangFile))
{
oFile = oFSO.OpenTextFile(sLangFile, 1, false, -2);
try
{
eval(oFile.ReadAll());
}
catch (oError)
{
BuiltInLang();
}
oFile.Close();
}
else
BuiltInLang();
}
else
BuiltInLang();
}
function BuiltInLang()
{
sTxtCaption = "Translator";
sTxtUse = "Use";
sTxtFromLang = "From language";
sTxtToLang = "To language";
sTxtAutoDetect = "Auto detect language";
sTxtListen = "Listen";
sTxtTranslate = "&Translate";
sTxtTranslateP = "Translate+";
sTxtOptions = "&Options";
sTxtSource = "Source text";
sTxtTarget = "Translated text";
sTxtSettings = "Settings";
sTxtUndo = "&Undo";
sTxtRedo = "&Redo";
sTxtCut = "&Cut";
sTxtCopyCB = "C&opy to clipboard";
sTxtInsertAP = "&Insert to AkelPad";
sTxtPasteCB = "&Paste from clipboard";
sTxtPasteAP = "Pa&ste from AkelPad";
sTxtDelete = "&Delete";
sTxtSelectAll = "Select &all";
sTxtEntireText = "&Entire text";
sTxtInterface = "Interface language";
sTxtSourceInCB = "Source text from Clipboard";
sTxtSourceWnd = "Show panel with source text";
sTxtLoadText = "Load source text to panel at start";
sTxtImmediate = "Start immediately translate";
sTxtWordWrap = "Wrap lines";
sTxtFontAP = "Font from AkelPad";
sTxtFontGUI = "GUI font";
sTxtSortLang = "Languages sort";
sTxtSortCode = "By code";
sTxtSortName = "By name";
sTxtOwnKey = "own key";
sTxtRegister = "Registration:";
sTxtOK = "OK";
sTxtCancel = "Cancel";
sTxtError = "Error";
sTxtNoText = "There is no text to translate.";
sTxtNoSupport = "Your system does not support XMLHttpRequest.";
sTxtNoInternet = "There was a problem with internet connection.";
sTxtWait = "Wait...";
sTxtUndefined = "Undefined";
sTxtChooseLang = "You need to choose the language.";
sTxtNoSpeech = "No support for speech in this language.";
sTxtRegScripts = "You must register library: Scripts.dll";
sTxtNoLibrary = "Can not load library: ";
aLangs[ 0][1] = "Afrikaans";
aLangs[ 1][1] = "Arabic";
aLangs[ 2][1] = "Belarusian";
aLangs[ 3][1] = "Bulgarian";
aLangs[ 4][1] = "Catalan";
aLangs[ 5][1] = "Czech";
aLangs[ 6][1] = "Welsh";
aLangs[ 7][1] = "Danish";
aLangs[ 8][1] = "German";
aLangs[ 9][1] = "Greek";
aLangs[10][1] = "English";
aLangs[11][1] = "Esperanto";
aLangs[12][1] = "Spanish";
aLangs[13][1] = "Estonian";
aLangs[14][1] = "Persian";
aLangs[15][1] = "Finnish";
aLangs[16][1] = "French";
aLangs[17][1] = "Irish";
aLangs[18][1] = "Galician";
aLangs[19][1] = "Hindi";
aLangs[20][1] = "Croatian";
aLangs[21][1] = "Haitian Creole";
aLangs[22][1] = "Hungarian";
aLangs[23][1] = "Indonesian";
aLangs[24][1] = "Icelandic";
aLangs[25][1] = "Italian";
aLangs[26][1] = "Hebrew";
aLangs[27][1] = "Japanese";
aLangs[28][1] = "Korean";
aLangs[29][1] = "Latin";
aLangs[30][1] = "Lithuanian";
aLangs[31][1] = "Latvian";
aLangs[32][1] = "Macedonian";
aLangs[33][1] = "Malay";
aLangs[34][1] = "Maltese";
aLangs[35][1] = "Dutch";
aLangs[36][1] = "Norwegian";
aLangs[37][1] = "Polish";
aLangs[38][1] = "Portuguese";
aLangs[39][1] = "Romanian";
aLangs[40][1] = "Russian";
aLangs[41][1] = "Slovak";
aLangs[42][1] = "Slovenian";
aLangs[43][1] = "Albanian";
aLangs[44][1] = "Serbian";
aLangs[45][1] = "Swedish";
aLangs[46][1] = "Swahili";
aLangs[47][1] = "Thai";
aLangs[48][1] = "Filipino";
aLangs[49][1] = "Turkish";
aLangs[50][1] = "Ukrainian";
aLangs[51][1] = "Urdu";
aLangs[52][1] = "Vietnamese";
aLangs[53][1] = "Yiddish";
aLangs[54][1] = "Chinese";
aLangs[55][1] = "Chinese Simplified";
aLangs[56][1] = "Chinese Traditional";
}
function Translate(bSelection, bAddToTarget)
{
var sMethod = "POST";
var sAPIkey = aAPIs[oSelect.API].APIkeyP ? aAPIs[oSelect.API].APIkeyP : aAPIs[oSelect.API].APIkey;
var nLang = AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_GETITEMDATA, oSelect.FromLang, 0);
var sFromLang = (nLang < 0) ? "" : aLangs[nLang][0];
var sToLang = aLangs[AkelPad.SendMessage(aWnd[IDTOLANGCB][WND], CB_GETITEMDATA, oSelect.ToLang, 0)][0];
var nTargetLen = oSys.Call("User32::GetWindowTextLengthW", aWnd[IDTXTTARGET][WND])
var nTargetSel = 0;
var sLangName;
var sURL;
var sSend;
var oRequest;
var oResponse;
var oError;
var i, n;
SetWndFontAndText(aWnd[IDDETECTLANG][WND], 0, sTxtWait);
nDetectLang = -1;
try
{
oRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (oError)
{
ErrorBox(sTxtNoSupport);
return;
}
if (bSourceWnd)
{
if (bSelection && AkelPad.SendMessage(aWnd[IDTXTSOURCE][WND], 3125 /*AEM_GETSEL*/, 0, 0))
AkelPad.SendMessage(aWnd[IDTXTSOURCE][WND], 1086 /*EM_GETSELTEXT*/, 0, lpBuffer);
else
oSys.Call("User32::GetWindowTextW", aWnd[IDTXTSOURCE][WND], lpBuffer, nBufSize);
sSource = AkelPad.MemRead(lpBuffer, DT_UNICODE);
}
else
{
if (bSourceInCB || (! hEditWnd) || ((WScript.Arguments.length > 2) && (WScript.Arguments(2) == "1")))
sSource = AkelPad.GetClipboardText().substr(0, aAPIs[oSelect.API].TextLen);
else
sSource = AkelPad.GetSelText(3 /*"\r\n"*/).substr(0, aAPIs[oSelect.API].TextLen);
}
sSource = sSource.replace(/^[ \t\r\n]+|[ \t\r\n]+$/, "");
if (! sSource)
{
ErrorBox(sTxtNoText);
return;
}
if (oSelect.API == 0) //Google
{
sURL = "http://translate.google.com/translate_a/t";
sSend = "client=qlt&sl=" + (sFromLang || "auto") + "&tl=" + sToLang + "&q=" + encodeURIComponent(sSource);
}
else if (oSelect.API == 1) //Bing
// //Bing GET method
// {
// sMethod = "GET";
//
// if (nLang < 0) //Auto detect
// {
// sURL = "http://api.microsofttranslator.com/V2/Http.svc/Detect?appId=" + sAPIkey + "&text=" + encodeURIComponent(sSource);
//
// OpenRequest(oRequest, sMethod, sURL);
//
// if (! SendRequest(oRequest, null))
// return;
//
// if (oRequest.status != 200)
// {
// ErrorBox(oRequest.status + " : " + oRequest.statusText);
// return;
// }
// sFromLang = oRequest.responseText.substring(oRequest.responseText.indexOf(">") + 1, oRequest.responseText.lastIndexOf("<"));
// }
//
// sURL = "http://api.microsofttranslator.com/V2/Http.svc/Translate?appId=" + sAPIkey + "&from=" + sFromLang + "&to=" + sToLang + "&text=" + encodeURIComponent(sSource);
// sSend = null;
// }
//Bing POST method
{
if (nLang < 0) //Auto detect
{
sURL = "http://api.microsofttranslator.com/V2/Http.svc/Detect?appId=" + sAPIkey;
OpenRequest(oRequest, sMethod, sURL);
if (! SendRequest(oRequest, sSource))
return;
if (oRequest.status != 200)
{
ErrorBox(oRequest.status + " : " + oRequest.statusText);
return;
}
sFromLang = oRequest.responseText.substring(oRequest.responseText.indexOf(">") + 1, oRequest.responseText.lastIndexOf("<"));
}
sURL = "http://api.microsofttranslator.com/V2/Http.svc/Translate?appId=" + sAPIkey + "&from=" + sFromLang + "&to=" + sToLang;
sSend = sSource;
}
else //Yandex
{
sURL = "http://translate.yandex.ru/tr.json/translate";
sSend = "lang=" + sFromLang + "-" + sToLang + "&text=" + encodeURIComponent(sSource);
}
OpenRequest(oRequest, sMethod, sURL);
if (! SendRequest(oRequest, sSend))
return;
if (oRequest.status != 200)
{
ErrorBox(oRequest.status + " : " + oRequest.statusText);
return;
}
if (oSelect.API == 0) //Google
{
eval("oResponse=" + oRequest.responseText + ";");
sFromLang = oResponse.src;
sTarget = "";
for (i = 0; i < oResponse.sentences.length; ++i)
sTarget += oResponse.sentences[i].trans;
if (oResponse.dict)
{
for (i = 0; i < oResponse.dict.length; ++i)
{
sTarget += "\r\n\r\n" + oResponse.dict[i].pos + ":";
for (n = 0; n < oResponse.dict[i].terms.length; ++n)
sTarget += "\r\n" + (n + 1) + ". " + oResponse.dict[i].terms[n];
}
}
}
else if (oSelect.API == 1) //Bing
{
sTarget = oRequest.responseText.substring(oRequest.responseText.indexOf(">") + 1, oRequest.responseText.lastIndexOf("<"));
sTarget = sTarget.replace(/
/g, "\r");
sTarget = sTarget.replace(/&/g, "&");
sTarget = sTarget.replace(/</g, "<");
sTarget = sTarget.replace(/>/g, ">");
}
else //Yandex
{
sTarget = eval(oRequest.responseText);
}
if (bAddToTarget && nTargetLen)
sTarget = "\r\n\r\n" + sTarget;
AkelPad.MemCopy(lpBuffer, sTarget, DT_UNICODE);
AkelPad.SendMessage(aWnd[IDTXTTARGET][WND], 0x00B1 /*EM_SETSEL*/, bAddToTarget ? -1 : 0, -1);
if (bAddToTarget && nTargetLen)
nTargetSel = oSelect.Target1 + 2;
AkelPad.SendMessage(aWnd[IDTXTTARGET][WND], 0x00C2 /*EM_REPLACESEL*/, 1, lpBuffer);
AkelPad.SendMessage(aWnd[IDTXTTARGET][WND], 0x00B1 /*EM_SETSEL*/, nTargetSel, nTargetSel);
if (nLang < 0)
{
for (i = 0; i < aLangs.length; ++i)
{
if (aLangs[i][0] == sFromLang)
{
nDetectLang = i;
sLangName = aLangs[i][1];
break;
}
}
if (! sLangName)
sLangName = sFromLang + " - " + sTxtUndefined;
SetWndFontAndText(aWnd[IDDETECTLANG][WND], 0, sTxtAutoDetect + ": " + sLangName);
}
else
SetWndFontAndText(aWnd[IDDETECTLANG][WND], 0, "");
}
function OpenRequest(oRequest, sMethod, sURL)
{
oRequest.open(sMethod, sURL, false);
oRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}
function SendRequest(oRequest, sSend)
{
try
{
oRequest.send(sSend);
}
catch (oError)
{
ErrorBox(sTxtNoInternet);
return false;
}
return true;
}
function ErrorBox(sError)
{
SetWndFontAndText(aWnd[IDDETECTLANG][WND], 0, "");
AkelPad.MessageBox(hWndDlg, sError, sTxtError, 48);
}
function Listen(hWnd, nSelection)
{
var lpReturn = AkelPad.MemAlloc(64 * 2);
var sMode;
oSys.Call("Winmm::mciSendStringW", "status TTS mode", lpReturn, 64, 0);
sMode = AkelPad.MemRead(lpReturn, DT_UNICODE);
AkelPad.MemFree(lpReturn);
if (sMode == "playing")
{
oSys.Call("Winmm::mciSendStringW", "close TTS", 0, 0, 0);
KillTimer();
}
else
{
if (nSelection < 0)
nSelection = AkelPad.SendMessage(hWnd, 3125 /*AEM_GETSEL*/, 0, 0);
if (nSelection)
AkelPad.SendMessage(hWnd, 1086 /*EM_GETSELTEXT*/, 0, lpBuffer);
else
oSys.Call("User32::GetWindowTextW", hWnd, lpBuffer, nBufSize);
sSpeechText = AkelPad.MemRead(lpBuffer, DT_UNICODE).replace(/([\$\+\*=_#&~])\1{2,}/g, "$1$1").replace(/([\,;.:\?!'])\1+/g, "$1").replace(/\[\(\)\[\]\{\}\^\/\|\\<>%"`-]+/g, " ").replace(/\s+/g, " ").replace(/^ | $/g, "");
if (hWnd == aWnd[IDTXTSOURCE][WND])
{
nSpeechLang = AkelPad.SendMessage(aWnd[IDFROMLANGCB][WND], CB_GETITEMDATA, oSelect.FromLang, 0);
nListenID = IDLISTEN1;
if (nSpeechLang < 0)
{
AkelPad.MessageBox(hWndDlg, sTxtChooseLang, sTxtListen, 48);
return;
}
}
else
{
nSpeechLang = AkelPad.SendMessage(aWnd[IDTOLANGCB][WND], CB_GETITEMDATA, oSelect.ToLang, 0);
nListenID = IDLISTEN2;
}
if (! aLangs[nSpeechLang][5])
{
AkelPad.MessageBox(hWndDlg, aLangs[nSpeechLang][1] + "\n\n" + sTxtNoSpeech, sTxtListen, 48);
return;
}
GetTextToSpeech();
nTimerCount = 0;
oSys.Call("User32::SetTimer", hWndDlg, IDTIMER, 250, 0);
PlayTextToSpeech();
}
}
function GetTextToSpeech()
{
var nPartLen = 100; //Google TTS limit text length
var oRequest;
var oError;
uSpeechBody = null;
if (sSpeechText.length > nPartLen)
{
sSpeechPart = sSpeechText.substr(0, nPartLen + 1);
if ((/ \S*$/.test(sSpeechPart)) && (RegExp.index > 0))
nPartLen = RegExp.index;
sSpeechPart = sSpeechPart.substr(0, nPartLen);
sSpeechText = sSpeechText.substr(nPartLen).replace(/^ /, "");
}
else
{
sSpeechPart = sSpeechText;
sSpeechText = "";
}
if (sSpeechPart)
{
try
{
oRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (oError)
{
sSpeechPart = "";
ErrorBox(sTxtNoSupport);
return;
}
OpenRequest(oRequest, "GET", "http://translate.google.com/translate_tts?ie=utf-8&tl=" + aLangs[nSpeechLang][0] + "&q=" + encodeURIComponent(sSpeechPart));
if (! SendRequest(oRequest, null))
{
sSpeechPart = "";
return;
}
if (oRequest.status == 200)
uSpeechBody = oRequest.responseBody; //array of unsigned bytes, typeof="unknown"
else
{
sSpeechPart = "";
ErrorBox(oRequest.status + " : " + oRequest.statusText);
}
}
}
function PlayTextToSpeech()
{
if (sSpeechPart)
{
var sMp3File = WScript.ScriptFullName.substring(0, WScript.ScriptFullName.lastIndexOf(".")) + ".mp3";
var oStream = new ActiveXObject("ADODB.Stream");
var nError;
oStream.Type = 1; // adTypeBinary
oStream.Open();
oStream.Write(uSpeechBody);
oStream.SaveToFile(sMp3File, 2 /*adSaveCreateOverWrite*/);
oStream.Close();
nError = oSys.Call("Winmm::mciSendStringW", 'open "' + sMp3File + '" alias TTS', 0, 0, 0);
if (! nError)
{
nError = oSys.Call("Winmm::mciSendStringW", "play TTS notify", 0, 0, hWndDlg);
if (! nError)
GetTextToSpeech();
}
if (nError)
{
KillTimer();
oSys.Call("Winmm::mciGetErrorStringW", nError, lpBuffer, nBufSize);
ErrorBox(nError + ": " + AkelPad.MemRead(lpBuffer, DT_UNICODE));
}
}
else
KillTimer();
}
function KillTimer()
{
oSys.Call("User32::KillTimer", hWndDlg, IDTIMER);
SetWndFontAndText(aWnd[nListenID][WND], hGuiFont, sTxtListen);
}
/**********************
Google v2 response:
{
"sentences": [
{"trans":"matka","orig":"mother","translit":"","src_translit":""}
{"trans":"...","orig":"...","translit":"","src_translit":""}
...
{"trans":"matka","orig":"mother","translit":"","src_translit":""}
],
"dict": [
{"pos":"rzeczownik","terms":["matka","mama",...]},
...
{"pos":"czasownik","terms":["matkowac","zrodzic"...]}
],
"src": "en",
"server_time": 7
}
-----------------------
Bing API v2 response:
language detect:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">en</string>
translation:
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Edycja</string>
**********************/
|
Last edited by KDJ on Sun Apr 07, 2013 6:19 pm; edited 26 times in total |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|