Czech translation
- Author
- Message
-
Offline
- Posts: 7
- Joined: Mon Nov 09, 2020 1:07 am
Návod AkelPadu v cz
Link na návod AkelPad pokud ho někdo potřebuje přeložený https://yadi.sk/d/0ZQKKa6JFaICGw
Last edited by graybeard on Mon Nov 09, 2020 2:05 am, edited 1 time in total.
-
Offline
- Posts: 7
- Joined: Mon Nov 09, 2020 1:07 am
Český překlad pro FindReplaceFiles.js
Český jazykový modul pro FindReplaceFiles.js
FindReplaceFiles_1029.lng
uložit jako UTF8-BOM
FindReplaceFiles_1029.lng
Code: Select all
/************************************************
FindReplaceFiles.js - ver. 2018-11-06
Interface language
Language: Čeština (1029) hex:0x405 Win:1250
Translated by: Zapa
*************************************************/
sTxtDlgTitle = "Najít/nahradit soubory";
sTxtDir = "&Adresář";
sTxtCurrent = "Ak&tuální";
sTxtBrowse = "&Procházet...";
sTxtSubDirs = "Úrov&eň podsložek:";
sTxtAll = "Vše";
sTxtFileName = "Název souboru:streamy";
sTxtRegExp = "Regulární výrazy";
sTxtNotName = "Kromě těchto jmen";
sTxtFiles = "Soubory (hlavní streamy) ";
sTxtStreams = "Alternativní NTFS streamy";
sTxtTextInFile = "&Text v souboru/streamu";
sTxtMatchCase = "&Rozlišit VELKÁ malá písmena";
sTxtMultiline = "&Víceřádkový";
sTxtNotContain = "Neobsahuje text";
sTxtSkipBinary = "Přeskočit binární soubory";
sTxtSkipLarger = "Přeskočit větší než [B]:";
sTxtReplaceWith = "Nahradit &za:";
sTxtSkipFiles = "Přeskočit soubory";
sTxtReadOnly = "Jen ke čtení";
sTxtHidden = "Skryté";
sTxtSystem = "Systémové";
sTxtInResults = "Ve výsledcích";
sTxtSearch = "&Hledat";
sTxtReplace = "&Nahradit";
sTxtHistory = "&Historie";
sTxtEdit = "&Upravit";
sTxtCopyList = "Kopírovat seznam";
sTxtClearList = "Vymazat seznam";
sTxtSettings = "Nastavení";
sTxtClose = "Zavřít";
sTxtFilesFound = "Nalezeny soubory";
sTxtFilesRepl = "Soubory nahrazeny";
sTxtNoFiles = "<žádné soubory>";
sTxtByteSymbol = "B";
sTxtNTFSStream = "Stream NTFS";
sTxtWait = "Počkat ...";
sTxtChooseDir = "Vyberte adresář:";
sTxtPathShow = "Zobrazit úplnou cestu v seznamu souborů";
sTxtSeparateWnd = "Spustit v samostatném okně";
sTxtKeepHist = "Zachovat historii při ukončení";
sTxtKeepFiles = "Zachovat seznam souborů";
sTxtDirNoExist = "Adresář neexistuje.";
sTxtFileNoExist = "Soubory neexistují. ";
STxtErrorRE = "Chyba v regulárním výrazu. ";
sTxtWantReplace = "Chcete nahradit obsah souborů?\n\nUpozornění: tuto operaci nelze vrátit zpět.";
sTxtDocModified = "Dokument byl změněn. Chcete jej uložit?";
sHlpAnyChar = "libovolný jeden znak";
sHlpAnyString = "libovolný řetězec znaků";
sHlpSemicolQuot = "středník musí být v uvozovkách";
sHlpListSepar = "oddělovač seznamu (středník)";
sHlpStreamSepar = "Soubor: Oddělovač proudu (dvojtečka)";
sHlpAnyChar_NL = "libovolný znak, kromě \\n";
sHlpDigit = "číslice [0-9]";
sHlpNonDigit = "non-digit [^0-9]";
sHlpWhiteSp = "mezery [ \\f\\n\\r\\t\\v]";
sHlpNonWhiteSp = "non-whitespace";
sHlpWordChar = "znak slova [A-Za-z0-9_]";
sHlpNonWordChar = "ne-písmeno znak";
sHlpNULL = "NULL znak";
sHlpFF = "nová stránka FF \\x0C";
sHlpNL = "nový řádek NL \\x0A";
sHlpCR = "konec řádku CR \\x0D";
sHlpTab = "Horizontal tab \\x09";
sHlpVTab = "Vertical tab \\x0B";
sHlpCharHex = "Hexadecimální znak FF";
sHlpUniCharHex = "Unicode char hex code 00FF";
sHlpBegin = "začátek řetězce/řádku";
sHlpEnd = "konec řetězce/řádku";
sHlpWordBoun = "hranice slova";
sHlpNonWordBoun = "neslovná hranice";
sHlpAlternative = "alternativní ab nebo xy ";
sHlpCharSet = "znaková sada, jakýkoliv specifikovanou";
sHlpNegCharSet = "negativní znaková sada";
sHlpRange = "rozsah znaků od A do Z";
sHlpNegRange = "záporný rozsah znaků";
sHlpCapture = "zachytit";
sHlpNotCapture = "nezachytit";
sHlpFollow = "následuje ab";
sHlpNotFollow = "nenásleduje ab";
sHlpBackrefer9 = "zpětná reference, rozsah 1-9";
sHlpBackrefer99 = "zpětná reference, rozsah 01-99";
sHlpZeroOrOne = "nula nebo jednou";
sHlpZeroOrMore = "nula nebo vícekrát";
sHlpOneOrMore = "jednou nebo vícekrát";
sHlpexactly = "přesně 3krát";
sHlpAtLeast = "alespoň 3krát";
sHlpFromTo = "3krát až 7krát";
sHlpSpecChars = "()[]{}^$.?+*|\\ speciální znaky";
sHlpDollar = "znak dolaru";
sHlpEntireStr = "celý řetězec shodný";
sHlpPrecedeStr = "podřetězec, který předchází odpovídajícímu řetězci";
sHlpFollowStr = "podřetězec, který následuje po odpovídajícím řetězci";
sHlpSubmatch9 = "9. zachycený dílčí díl, rozsah 1-9";
sHlpSubmatch99 = "99. zachycený dílčí díl, rozsah 01-99";
sHlpBackslash = "zpětné lomítko";
Last edited by graybeard on Mon Nov 30, 2020 8:18 pm, edited 6 times in total.
-
Offline
- Posts: 7
- Joined: Mon Nov 09, 2020 1:07 am
Czech Interface lang for FindReplaceEx.js
Czech Interface lang for FindReplaceEx.js
save as UTF8-BOM
FindReplaceEx_1029.lng
save as UTF8-BOM
FindReplaceEx_1029.lng
Code: Select all
/**************************************************
FindReplaceEx.js - ver. 2018-11-06
Interface language
Language: Čeština (1029)
Translated by: Zapa
**************************************************/
sTxtMore = '&Více';
sTxtCount = 'Vy&počítat ';
sTxtFindAll = '&Najít vše';
sTxtShowInLog = 'Zobrazit v Log-panelu';
sTxtOnlyMatched = 'pouze nalezeno';
sTxtEntireLines = 'celé řádky';
sTxtCopyToCB = 'Zkopírovat do schránky';
sTxtOpenInTab = 'Otevřít na nové kartě';
sTxtBookmarkLines = 'Přidejte si řádky do záložek';
sTxtUnmarkLines = 'Odeberte záložky z řádků';
sTxtTemplates = 'Šablony';
sTxtBatches = 'Dávky(Batch)';
sTxtTransparentNA = 'Transparentnost - je-li neaktivní dialog';
sTxtWait = 'Počkejte...';
sTxtStop = 'Stop';
sTxtNoName = 'beze jména';
sTxtTotalFound = 'Celkem nalezeno: ';
sTxtReplAllCD = '"Nahradit vše" zavře dialo&g';
sTxtReplAllWM = '"Nahradit vše" &beze zpráv';
sTxtCheckInSel = 'Označit "Při výběru" pokud existuje výběr';
sTxtCycleSearch = 'C&yklické Hledání';
sTxtPrompt = 'Vý&zva';
sTxtWhatFind = 'Najít co';
sTxtReplaceWith = 'Nahradit za';
sTxtMatchCase = 'Rozeznat VELKÁ a &malá písmena';
sTxtWholeWord = '&Celé slovo';
sTxtRegExp = 'Reg&ulární výrazy';
sTxtDotMatchesNL = '&. zachycuje \\n';
sTxtEscSeq = '&Esc-sekvence';
sTxtDirection = 'Směr';
sTxtDirDown = '&Dolů';
sTxtDirUp = 'Na&horu';
sTxtDirBeginning = '&Od začátku';
sTxtDirInSel = 'Ve výbě&ru';
sTxtDirAllFiles = 'Všechny &soubory';
sTxtNew = 'Nový';
sTxtAdd = 'Přidat do';
sTxtRename = 'Upravit název';
sTxtMoveUp = 'Nahoru';
sTxtMoveDown = 'Dolů';
sTxtRemove = 'Vymazat';
sTxtCheckExpr = 'Zkontrolujte výraz';
sTxtAddToBatch = 'Přidat do dávky';
sTxtOK = 'OK';
sTxtClose = 'Zavřít';
sTxtBatchReplace = 'Výměna dávky(Batch)';
sTxtBatchReplAll = 'Vyměňte vše (s Batch)';
sTxtEnableAll = 'Zapněte/vypněte vše';
sTxtClosesDialog = 'Zavřít dialog';
sTxtWithoutMsg = 'Žádná zpráva ';
sTxtTemplateName = 'Název šablony';
sTxtConditions = 'Podmínky';
sTxtAllColumns = 'Všechny sloupce';
sTxtNameOnly = 'Pouze jméno';
sTxtSortByName = 'Seřaď dle jména';
sTxtNameInvalid = 'Neplatné jméno.';
sTxtNameExists = 'Tento název šablony se již používá.';
sTxtWantRemove = 'Opravdu chcete tuto šablonu smazat?';
sTxtBatchNumber = 'Dávka №';
sTxtWantBatchRepl = 'Nahraďte vše touto dávkou(Batch)?';
sTxtNoFindText = 'V poli "Co najít" není žádný text.';
sTxtExprOK = 'Výraz je správný.';
sTxtExprError = 'Chyba ve výrazu';
sTxtCountChanges = 'Počet náhrad: ';
//context menu edit
sMnuUndo = 'Zpět ';
sMnuRedo = 'Opakovat';
sMnuCut = 'Vyjmout';
sMnuCopy = 'Kopírovat';
sMnuPaste = 'Vložit';
sMnuDelete = 'Vymazat';
sMnuSelectAll = 'Vybrat vše';
sMnuAPFont = 'Písmo (Zobrazit->Písmo)';
sMnuNextTempl = 'Další šablona';
sMnuPrevTempl = 'Předchozí šablona';
//RegExp help
sHlpAnyChar = 'jakýkoli znak (tečka)';
sHlpSpecChars = '()[]{}^$.?+*|\\ Speciální symboly';
sHlpBackslash = 'obrácené lomítko';
sHlpNull = 'prázdný znak(NULL)';
sHlpFF = 'posuv o stránku(FF)';
sHlpNL = 'nový řádek(NL)';
sHlpAnyNL = 'nový řádek libovolného formátu';
sHlpTab = 'tabulátor(tab)';
sHlpVTab = 'vertikální tabulátor(Vtab)';
sHlpDigit = 'číslice';
sHlpNonDigit = 'ne-čísla';
sHlpWhiteSp = 'znak mezery';
sHlpNonWhiteSp = 'znak bez mezer';
sHlpWordChar = 'slovní symbol (non-delimiter)';
sHlpNonWordChar = 'neslovní symbol (delimiter)';
sHlpCharHex = 'znak - kód v rozsahu 0-10FFFF';
sHlpCharHex2 = 'symbol - 2-číselný hex-kód';
sHlpCharHex4 = 'symbol - 4-číselný hex-kód';
sHlpAlternative = 'jedna z alternativ: ab nebo xy';
sHlpCharSet = 'sadu znaků, potřebujete kteroukoli z nich';
sHlpNegCharSet = 'exkluzivní znaková sada';
sHlpRange = 'rozsah znaků od a do z';
sHlpNegRange = 'kromě rozsahu';
sHlpBeginLine = 'začátek řádku';
sHlpEndLine = 'konec řádku';
sHlpBeginText = 'začátek dokumentu';
sHlpEndText = 'konec dokumentu';
sHlpBeginRange = 'začátek rozsahu hledání';
sHlpEndRange = 'konec rozsahu hledání';
sHlpWordBoun = 'hranice slova';
sHlpNonWordBoun = 'ne hranice slova';
sHlpExcludePrev = 'vyloučit předchozí z výsledku';
sHlpZeroOrOne = '0 nebo 1krát';
sHlpZeroOrMore = '0 nebo vícekrát ';
sHlpOneOrMore = '1 nebo vícekrát';
sHlpExactly = 'přesně 3krát';
sHlpAtLeast = 'nejméně 3krát';
sHlpFromTo = '3 až 7krát';
sHlpEntireStr = 'celý zachycený řádek';
sHlpSubmatch9 = '9. podřetězec (rozsah 1-9)';
sHlpSubmatch99 = '99. podřetězec (rozsah 01-99)';
sHlpGreedy = '- nad chamtivými kvantifikátory ';
sHlpLazy = 'přidat pro líný kvantifikátor';
sHlpPossesive = 'přidat pro ultra-chamtivý kvantifikátor';
sHlpCapture1 = 'odpovídá zachytu ab';
sHlpCapture2 = 'odpovídá negativnímu ab, zachycení';
sHlpNotCapture = 'odpovídá ab, ne zachycuje';
sHlpAtomicGrouping = 'atomizovaná skupina (bez zachycení)';
sHlpPreceded = 'před řetězcem je ab';
sHlpNotPreceded = 'před řetězcem není ab';
sHlpFollowed = 'za řetězcem je ab';
sHlpNotFollowed = 'za řetězcem není ab';
sHlpCondition = 'pokud (1), pak x, jinak y';
sHlpBackrefer9 = 'zpětný odkaz, rozsah 1-9';
sHlpBackrefer99 = 'zpětný odkaz, rozsah 01-99';
sHlpIgnoreCase = 'ignorovat VELKÁ a malá písmena';
sHlpMultiline = 'víceřádkové vyhledávání (výchozí)';
sHlpDotDefault = 'tečka odpovídá libovolnému znaku (ve výchozím nastavení)';
sHlpInvertGreed = 'invertovat chamtivé kvantifikátory';
sHlpMatchCase = 'rozeznávat VELKÁ a malá písmena';
sHlpMultilineOff = 'vypnout víceřádkové vyhledávání';
sHlpDotDefaultOff = 'tečka odpovídá libovolnému znaku kromě \\n';
sHlpInvertGreedOff = 'vrátit invertní chamtivost';
-
Offline
- Posts: 7
- Joined: Mon Nov 09, 2020 1:07 am
Czech Interface lang for Translator.js
Czech Interface lang for Translator.js
Save as UTF16 small Endian +BOM.
For my unclear reason, saving as UTF8 is non-working?
Translator_Czech.lng
Save as UTF16 small Endian +BOM.
For my unclear reason, saving as UTF8 is non-working?
Translator_Czech.lng
Code: Select all
/********************************
Translator.js - ver. 2018-11-06
Interface language
Language: Czech
Translated by: r.zapa
********************************/
sTxtCaption = "Překladač";
sTxtUse = "Použit";
sTxtFromLang = "Z jazyka";
sTxtToLang = "Do jazyka";
sTxtAutoDetect = "Autodetekce jazyka";
sTxtListen = "Naslouchat";
sTxtTranslate = "&Přeložit";
sTxtTranslateP = "Přeložit+";
sTxtOptions = "&Možnosti";
sTxtSource = "Zdrojový t&ext";
sTxtTarget = "Přeložený &text";
sTxtSettings = "Nastavení";
sTxtUndo = "V&rátit";
sTxtRedo = "Z&opakovat";
sTxtCut = "&Vyjmout";
sTxtCopyCB = "&Zkopírovat do schránky";
sTxtInsertAP = "Vložte do &AkelPad'u";
sTxtPasteCB = "Vložit ze &schránky";
sTxtPasteAP = "V&ložit z AkelPad'u";
sTxtDelete = "Vy&mazat";
sTxtSelectAll = "Vy&brat vše";
sTxtEntireText = "&Celý text";
sTxtInterface = "Jazyk Interfejsu";
sTxtSourceInCB = "Zdrojový text ze schránky";
sTxtSourceWnd = "Zobrazit panel se zdrojovým textem";
sTxtLoadText = "Načíst zdrojový text do panelu při spuštění";
sTxtImmediate = "Začněte okamžitě překládat";
sTxtWordWrap = "Zalomit řádky";
sTxtFontAP = "Písmo AkelPad'u";
sTxtFontGUI = "Písmo interfejsu GUI";
sTxtSortLang = "Třídění jazyků";
sTxtSortCode = "Podle kódu";
sTxtSortName = "Podle jména";
sTxtOwnKey = "vlastní klíč";
sTxtRegister = "Registrace:";
sTxtOK = "OK";
sTxtCancel = "Zrušit";
sTxtError = "Chyba";
sTxtNoText = "Žádný text k překladu.";
sTxtNoSupport = "Váš systém nepodporuje XMLHttpRequest.";
sTxtNoInternet = "Došlo k problému s připojením k internetu.";
sTxtWait = "Čekejte...";
sTxtUndefined = "Nedefinováno";
sTxtChooseLang = "Musíte si vybrat jazyk.";
sTxtNoSpeech = "Žádná podpora výslovnosti pro tento jazyk.";
sTxtRegScripts = "Musíte zaregistrovat knihovnu: Scripts.dll";
sTxtNoLibrary = "Knihovnu nelze načíst: ";
aLangs[ 0][1] = "Afrikánština";
aLangs[ 1][1] = "Arabština";
aLangs[ 2][1] = "Ázerbájdžánský";
aLangs[ 3][1] = "Běloruština";
aLangs[ 4][1] = "Bulharština";
aLangs[ 5][1] = "Bosenština";
aLangs[ 6][1] = "Katalánština";
aLangs[ 7][1] = "Česky";
aLangs[ 8][1] = "Velština";
aLangs[ 9][1] = "Dánština";
aLangs[10][1] = "Německy";
aLangs[11][1] = "Řecky";
aLangs[12][1] = "Anglicky";
aLangs[13][1] = "Esperanto";
aLangs[14][1] = "Španělština";
aLangs[15][1] = "Estonština";
aLangs[16][1] = "Peršan";
aLangs[17][1] = "Finština";
aLangs[18][1] = "Francouzština";
aLangs[19][1] = "Irština";
aLangs[20][1] = "Galicijština";
aLangs[21][1] = "Hebrejsky";
aLangs[22][1] = "Hindština";
aLangs[23][1] = "Chorvatština";
aLangs[24][1] = "Haitská kreolština";
aLangs[25][1] = "Maďarština";
aLangs[26][1] = "Arménský";
aLangs[27][1] = "Indonéština";
aLangs[28][1] = "Islandský";
aLangs[29][1] = "Italština";
aLangs[30][1] = "Hebrejsky";
aLangs[31][1] = "Japonština";
aLangs[32][1] = "Gruzínština";
aLangs[33][1] = "Korejština";
aLangs[34][1] = "Latinka";
aLangs[35][1] = "Litevština";
aLangs[36][1] = "Lotyština";
aLangs[37][1] = "Makedonština";
aLangs[38][1] = "Malajština";
aLangs[39][1] = "Maltština";
aLangs[40][1] = "Nizozemština";
aLangs[41][1] = "Norština";
aLangs[42][1] = "Pandžábský";
aLangs[43][1] = "Polsky";
aLangs[44][1] = "Portugalština";
aLangs[45][1] = "Rumunština";
aLangs[46][1] = "Rusky";
aLangs[47][1] = "Slovensky";
aLangs[48][1] = "Slovinština";
aLangs[49][1] = "Albánec";
aLangs[50][1] = "Srbština";
aLangs[51][1] = "Švédština";
aLangs[52][1] = "Svahilština";
aLangs[53][1] = "Tamil";
aLangs[54][1] = "Thajština";
aLangs[55][1] = "Filipínský";
aLangs[56][1] = "Turečtina";
aLangs[57][1] = "Ukrajinsky";
aLangs[58][1] = "Urdština";
aLangs[59][1] = "Vietnamština";
aLangs[60][1] = "Jidiš";
aLangs[61][1] = "Čínština";
aLangs[62][1] = "Zjednodušená čínština";
aLangs[63][1] = "Tradiční čínština";
aLangs[64][1] = "Zjednodušená čínština";
aLangs[65][1] = "Tradiční čínština";
-
Offline
- Posts: 7
- Joined: Mon Nov 09, 2020 1:07 am
Řazení ve sloupcích
Sort in columns script with GUI
Czech Interface lang in within script SortInColumns.js from KDJ + small preparations.
save as UTF8+BOM
SortInColumns.js
Czech Interface lang in within script SortInColumns.js from KDJ + small preparations.
save as UTF8+BOM
SortInColumns.js
Code: Select all
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=10491#p10491
// Version: 2015-01-08
// Author: KDJ
//
// *** Sort in columns ***
//
// Usage:
// Call("Scripts::Main", 1, "SortInColumns.js")
//
// Shortcut keys in dialog box:
// Enter - Sort
// Esc - Close
// Shift+Alt+Right (Left, Down, Up, End, Home, PgDn, PgUp) - move dialog box.
//
// Remark:
// To effect was clearly visible, you should use a fixed-width font.
if (AkelPad.GetLangId(0 /*LANGID_FULL*/) == 0x0415) //Polish
{
var sTxtCaption = "Sortowanie w kolumnach";
var sTxtSortRange = "Zakres sortowania";
var sTxtFrom = "Od";
var sTxtTo = "Do";
var sTxtColumns = "&Kolumny:";
var sTxtLines = "&Wiersze:";
var sTxtSortKeys = "Klucze sortowania - kolumny";
var sTxtKey = "Klucz";
var sTxtDesc = "Malejąco";
var sTxtIgCase = "Ignoruj wlk. liter";
var sTxtString = "String";
var sTxtLocale = "Alfabetycznie";
var sTxtNum = "Numerycznie";
var sTxtAllKeys = "Wszystkie klucze";
var sTxtDescAll = "&Malejąco";
var sTxtIgCaseAll = "&Ignoruj wlk. liter";
var sTxtStringAll = "&String";
var sTxtLocaleAll = "&Alfabetycznie";
var sTxtNumAll = "&Numerycznie";
var sTxtReverse = "&Odwróć tylko kolejność wierszy";
var sTxtCopyToCB = "Wynik kopiuj do schowka, nie zmieniaj &tekstu";
var sTxtSort = "Sortuj";
var sTxtUndo = "&Cofnij";
var sTxtRedo = "&Powtórz";
var sTxtNoRangeC = "Brak zakresu kolumn do sortowania.";
var sTxtNoRangeL = "Brak zakresu wierszy do sortowania.";
var sTxtNoKey1 = "Brak zakresu kolumn w pierwszym kluczu.";
}
else if (AkelPad.GetLangId(0 /*LANGID_FULL*/) == 0x0405 /*Czech*/)
{
//translated by r.zapa
var sTxtCaption = "Třídit ve sloupcích";
var sTxtSortRange = "Rozsah třídění";
var sTxtFrom = "Od";
var sTxtTo = "Do";
var sTxtColumns = "Sloupce:";
var sTxtLines = "Řádky:";
var sTxtSortKeys = "Klíče třídění - sloupce";
var sTxtKey = "Klíč";
var sTxtDesc = "Klesající";
var sTxtIgCase = "Ignorovat VEL.písmena";
var sTxtString = "String";
var sTxtLocale = "Abecedně";
var sTxtNum = "Numericky";
var sTxtAllKeys = "Všechny klíče";
var sTxtDescAll = "Klesající Vše";
var sTxtIgCaseAll = "Ignorovat vše VEL.písm.";
var sTxtStringAll = "String Vše";
var sTxtLocaleAll = "Abecedně Vše";
var sTxtNumAll = "Numericky Vše";
var sTxtReverse = "Obraťte pouze řádky";
var sTxtCopyToCB = "Zkopírujte výsledek do schránky, neměňte text";
var sTxtSort = "Třídit";
var sTxtUndo = "Zpět";
var sTxtRedo = "Zopakovat";
var sTxtNoRangeC = "Neexistuje žádný rozsah sloupců k třídění.";
var sTxtNoRangeL = "Neexistuje žádný rozsah řádků k třídění.";
var sTxtNoKey1 = "V prvním klíči není žádný rozsah sloupců.";
}
else
{
var sTxtCaption = "Sort in columns";
var sTxtSortRange = "Sort range";
var sTxtFrom = "From";
var sTxtTo = "To";
var sTxtColumns = "&Columns:";
var sTxtLines = "&Lines:";
var sTxtSortKeys = "Sort keys - columns";
var sTxtKey = "Key";
var sTxtDesc = "Descending";
var sTxtIgCase = "Ignore case";
var sTxtString = "String";
var sTxtLocale = "Alphabetically";
var sTxtNum = "Numerically";
var sTxtAllKeys = "All keys";
var sTxtDescAll = "&Descending";
var sTxtIgCaseAll = "&Ignore case";
var sTxtStringAll = "&String";
var sTxtLocaleAll = "&Alphabetically";
var sTxtNumAll = "&Numerically";
var sTxtReverse = "Reverse &order of lines only";
var sTxtCopyToCB = "Resul&t copy to clipboard, do not replace text";
var sTxtSort = "Sort";
var sTxtUndo = "&Undo";
var sTxtRedo = "&Redo";
var sTxtNoRangeC = "There is no range of columns to sort.";
var sTxtNoRangeL = "There is no range of lines to sort.";
var sTxtNoKey1 = "There is no range of columns in first sort key.";
}
var DT_DWORD = 3;
var BM_GETCHECK = 240;
var BM_SETCHECK = 241;
var oSys = AkelPad.SystemFunction();
var hMainWnd = AkelPad.GetMainWnd();
var hEditWnd = AkelPad.GetEditWnd();
var hGuiFont = oSys.Call("Gdi32::GetStockObject", 17 /*DEFAULT_GUI_FONT*/);
var hInstDLL = AkelPad.GetInstanceDll();
var sClassName = "AkelPad::Scripts::" + WScript.ScriptName + "::" + hInstDLL;
var aDesc = [0,0,0,0,0];
var aIgCase = [1,1,1,1,1];
var aString = [1,1,1,1,1];
var aLocale = [0,0,0,0,0];
var aNum = [0,0,0,0,0];
var bDescAll = 0;
var bIgCaseAll = 1;
var nMethod = 1;
var bReverse = 0;
var bCopyToCB = 0;
var nUndoLimit = 0;
var nRedoLimit = 0;
var nWordWrap;
var nLastLine;
var nLastCol;
var hWndDlg;
var lpBuffer;
var bGetSel;
var bIsReturn;
var hFocus;
var nWndPosX;
var nWndPosY;
ReadWriteIni(0);
var aWnd = [];
var IDSORTRANGE = 1000;
var IDFROM = 1001;
var IDTO = 1002;
var IDCOLUMNS = 1003;
var IDBEGCOL = 1004;
var IDENDCOL = 1005;
var IDLINES = 1006;
var IDBEGLINE = 1007;
var IDENDLINE = 1008;
var IDSORTK1 = 1009;
var IDSORTK2 = 1010;
var IDSORTK3 = 1011;
var IDSORTK4 = 1012;
var IDSORTK5 = 1013;
var IDSORTK6 = 1014;
var IDFROM1 = 1015;
var IDTO1 = 1016;
var IDALLKEYS = 1017;
var IDKEY1 = 1018;
var IDBEGCOL1 = 1019;
var IDENDCOL1 = 1020;
var IDDESC1 = 1021;
var IDIGCASE1 = 1022;
var IDSTRING1 = 1023;
var IDLOCALE1 = 1024;
var IDNUM1 = 1025;
var IDKEY2 = 1026;
var IDBEGCOL2 = 1027;
var IDENDCOL2 = 1028;
var IDDESC2 = 1029;
var IDIGCASE2 = 1030;
var IDSTRING2 = 1031;
var IDLOCALE2 = 1032;
var IDNUM2 = 1033;
var IDKEY3 = 1034;
var IDBEGCOL3 = 1035;
var IDENDCOL3 = 1036;
var IDDESC3 = 1037;
var IDIGCASE3 = 1038;
var IDSTRING3 = 1039;
var IDLOCALE3 = 1040;
var IDNUM3 = 1041;
var IDKEY4 = 1042;
var IDBEGCOL4 = 1043;
var IDENDCOL4 = 1044;
var IDDESC4 = 1045;
var IDIGCASE4 = 1046;
var IDSTRING4 = 1047;
var IDLOCALE4 = 1048;
var IDNUM4 = 1049;
var IDKEY5 = 1050;
var IDBEGCOL5 = 1051;
var IDENDCOL5 = 1052;
var IDDESC5 = 1053;
var IDIGCASE5 = 1054;
var IDSTRING5 = 1055;
var IDLOCALE5 = 1056;
var IDNUM5 = 1057;
var IDDESCALL = 1058;
var IDIGCASEALL = 1059;
var IDSTRINGALL = 1060;
var IDLOCALEALL = 1061;
var IDNUMALL = 1062;
var IDREVERSE = 1063;
var IDCOPYTOCB = 1064;
var IDSORT = 1065;
var IDUNDO = 1066;
var IDREDO = 1067;
var CLASS = 0;
var WND = 1;
var EXSTYLE = 2;
var STYLE = 3;
var X = 4;
var Y = 5;
var W = 6;
var H = 7;
var TXT = 8;
//0x50000000 - WS_VISIBLE|WS_CHILD
//0x50000007 - WS_VISIBLE|WS_CHILD|BS_GROUPBOX
//0x50010000 - WS_VISIBLE|WS_CHILD|WS_TABSTOP
//0x50010003 - WS_VISIBLE|WS_CHILD|WS_TABSTOP|BS_AUTOCHECKBOX
//0x50012080 - WS_VISIBLE|WS_CHILD|WS_TABSTOP|ES_AUTOHSCROLL|ES_NUMBER
//Windows CLASS, WND, EXSTYLE, STYLE, X, Y, W, H, TXT
aWnd[IDSORTRANGE] = ["BUTTON", 0, 0, 0x50000007, 10, 10, 195, 85, sTxtSortRange];
aWnd[IDFROM ] = ["STATIC", 0, 0, 0x50000000, 80, 25, 55, 13, sTxtFrom];
aWnd[IDTO ] = ["STATIC", 0, 0, 0x50000000, 140, 25, 55, 13, sTxtTo];
aWnd[IDCOLUMNS ] = ["STATIC", 0, 0, 0x50000000, 20, 40, 60, 13, sTxtColumns];
aWnd[IDBEGCOL ] = ["EDIT", 0, 0x200, 0x50012080, 80, 40, 55, 20, ""];
aWnd[IDENDCOL ] = ["EDIT", 0, 0x200, 0x50012080, 140, 40, 55, 20, ""];
aWnd[IDLINES ] = ["STATIC", 0, 0, 0x50000000, 20, 65, 60, 13, sTxtLines];
aWnd[IDBEGLINE ] = ["EDIT", 0, 0x200, 0x50012080, 80, 65, 55, 20, ""];
aWnd[IDENDLINE ] = ["EDIT", 0, 0x200, 0x50012080, 140, 65, 55, 20, ""];
aWnd[IDSORTK1 ] = ["BUTTON", 0, 0, 0x50000007, 10, 110, 320, 82, sTxtSortKeys];
aWnd[IDSORTK2 ] = ["BUTTON", 0, 0, 0x50000007, 10, 185, 320, 82, ""];
aWnd[IDSORTK3 ] = ["BUTTON", 0, 0, 0x50000007, 10, 260, 320, 82, ""];
aWnd[IDSORTK4 ] = ["BUTTON", 0, 0, 0x50000007, 10, 335, 320, 82, ""];
aWnd[IDSORTK5 ] = ["BUTTON", 0, 0, 0x50000007, 10, 410, 320, 82, ""];
aWnd[IDSORTK6 ] = ["BUTTON", 0, 0, 0x50000007, 10, 485, 320, 82, ""];
aWnd[IDFROM1 ] = ["STATIC", 0, 0, 0x50000000, 80, 125, 55, 13, sTxtFrom];
aWnd[IDTO1 ] = ["STATIC", 0, 0, 0x50000000, 140, 125, 55, 13, sTxtTo];
aWnd[IDALLKEYS ] = ["STATIC", 0, 0, 0x50000000, 20, 515, 90, 13, sTxtAllKeys];
aWnd[IDKEY1 ] = ["STATIC", 0, 0, 0x50000000, 20, 140, 60, 13, sTxtKey+" &1:"];
aWnd[IDBEGCOL1 ] = ["EDIT", 0, 0x200, 0x50012080, 80, 140, 55, 20, ""];
aWnd[IDENDCOL1 ] = ["EDIT", 0, 0x200, 0x50012080, 140, 140, 55, 20, ""];
aWnd[IDDESC1 ] = ["BUTTON", 0, 0, 0x50010003, 205, 125, 120, 16, sTxtDesc];
aWnd[IDIGCASE1 ] = ["BUTTON", 0, 0, 0x50010003, 205, 145, 120, 16, sTxtIgCase];
aWnd[IDSTRING1 ] = ["BUTTON", 0, 0, 0x50010003, 50, 170, 60, 16, sTxtString];
aWnd[IDLOCALE1 ] = ["BUTTON", 0, 0, 0x50010003, 110, 170, 90, 16, sTxtLocale];
aWnd[IDNUM1 ] = ["BUTTON", 0, 0, 0x50010003, 205, 170, 120, 16, sTxtNum];
aWnd[IDKEY2 ] = ["STATIC", 0, 0, 0x50000000, 20, 215, 60, 13, sTxtKey+" &2:"];
aWnd[IDBEGCOL2 ] = ["EDIT", 0, 0x200, 0x50012080, 80, 215, 55, 20, ""];
aWnd[IDENDCOL2 ] = ["EDIT", 0, 0x200, 0x50012080, 140, 215, 55, 20, ""];
aWnd[IDDESC2 ] = ["BUTTON", 0, 0, 0x50010003, 205, 200, 120, 16, sTxtDesc];
aWnd[IDIGCASE2 ] = ["BUTTON", 0, 0, 0x50010003, 205, 220, 120, 16, sTxtIgCase];
aWnd[IDSTRING2 ] = ["BUTTON", 0, 0, 0x50010003, 50, 245, 60, 16, sTxtString];
aWnd[IDLOCALE2 ] = ["BUTTON", 0, 0, 0x50010003, 110, 245, 90, 16, sTxtLocale];
aWnd[IDNUM2 ] = ["BUTTON", 0, 0, 0x50010003, 205, 245, 120, 16, sTxtNum];
aWnd[IDKEY3 ] = ["STATIC", 0, 0, 0x50000000, 20, 290, 60, 13, sTxtKey+" &3:"];
aWnd[IDBEGCOL3 ] = ["EDIT", 0, 0x200, 0x50012080, 80, 290, 55, 20, ""];
aWnd[IDENDCOL3 ] = ["EDIT", 0, 0x200, 0x50012080, 140, 290, 55, 20, ""];
aWnd[IDDESC3 ] = ["BUTTON", 0, 0, 0x50010003, 205, 275, 120, 16, sTxtDesc];
aWnd[IDIGCASE3 ] = ["BUTTON", 0, 0, 0x50010003, 205, 295, 120, 16, sTxtIgCase];
aWnd[IDSTRING3 ] = ["BUTTON", 0, 0, 0x50010003, 50, 320, 60, 16, sTxtString];
aWnd[IDLOCALE3 ] = ["BUTTON", 0, 0, 0x50010003, 110, 320, 90, 16, sTxtLocale];
aWnd[IDNUM3 ] = ["BUTTON", 0, 0, 0x50010003, 205, 320, 120, 16, sTxtNum];
aWnd[IDKEY4 ] = ["STATIC", 0, 0, 0x50000000, 20, 365, 60, 13, sTxtKey+" &4:"];
aWnd[IDBEGCOL4 ] = ["EDIT", 0, 0x200, 0x50012080, 80, 365, 55, 20, ""];
aWnd[IDENDCOL4 ] = ["EDIT", 0, 0x200, 0x50012080, 140, 365, 55, 20, ""];
aWnd[IDDESC4 ] = ["BUTTON", 0, 0, 0x50010003, 205, 350, 120, 16, sTxtDesc];
aWnd[IDIGCASE4 ] = ["BUTTON", 0, 0, 0x50010003, 205, 370, 120, 16, sTxtIgCase];
aWnd[IDSTRING4 ] = ["BUTTON", 0, 0, 0x50010003, 50, 395, 60, 16, sTxtString];
aWnd[IDLOCALE4 ] = ["BUTTON", 0, 0, 0x50010003, 110, 395, 90, 16, sTxtLocale];
aWnd[IDNUM4 ] = ["BUTTON", 0, 0, 0x50010003, 205, 395, 120, 16, sTxtNum];
aWnd[IDKEY5 ] = ["STATIC", 0, 0, 0x50000000, 20, 440, 60, 13, sTxtKey+" &5:"];
aWnd[IDBEGCOL5 ] = ["EDIT", 0, 0x200, 0x50012080, 80, 440, 55, 20, ""];
aWnd[IDENDCOL5 ] = ["EDIT", 0, 0x200, 0x50012080, 140, 440, 55, 20, ""];
aWnd[IDDESC5 ] = ["BUTTON", 0, 0, 0x50010003, 205, 425, 120, 16, sTxtDesc];
aWnd[IDIGCASE5 ] = ["BUTTON", 0, 0, 0x50010003, 205, 445, 120, 16, sTxtIgCase];
aWnd[IDSTRING5 ] = ["BUTTON", 0, 0, 0x50010003, 50, 470, 60, 16, sTxtString];
aWnd[IDLOCALE5 ] = ["BUTTON", 0, 0, 0x50010003, 110, 470, 90, 16, sTxtLocale];
aWnd[IDNUM5 ] = ["BUTTON", 0, 0, 0x50010003, 205, 470, 120, 16, sTxtNum];
aWnd[IDDESCALL ] = ["BUTTON", 0, 0, 0x50010003, 205, 500, 120, 16, sTxtDescAll];
aWnd[IDIGCASEALL] = ["BUTTON", 0, 0, 0x50010003, 205, 520, 120, 16, sTxtIgCaseAll];
aWnd[IDSTRINGALL] = ["BUTTON", 0, 0, 0x50010003, 50, 545, 60, 16, sTxtStringAll];
aWnd[IDLOCALEALL] = ["BUTTON", 0, 0, 0x50010003, 110, 545, 90, 16, sTxtLocaleAll];
aWnd[IDNUMALL ] = ["BUTTON", 0, 0, 0x50010003, 205, 545, 120, 16, sTxtNumAll];
aWnd[IDREVERSE ] = ["BUTTON", 0, 0, 0x50010003, 20, 575, 170, 16, sTxtReverse];
aWnd[IDCOPYTOCB ] = ["BUTTON", 0, 0, 0x50010003, 20, 595, 290, 16, sTxtCopyToCB];
aWnd[IDSORT ] = ["BUTTON", 0, 0, 0x50010000, 240, 15, 80, 23, sTxtSort];
aWnd[IDUNDO ] = ["BUTTON", 0, 0, 0x50010000, 240, 47, 80, 23, sTxtUndo];
aWnd[IDREDO ] = ["BUTTON", 0, 0, 0x50010000, 240, 72, 80, 23, sTxtRedo];
if (hEditWnd)
{
nWordWrap = AkelPad.SendMessage(hEditWnd, 3241 /*AEM_GETWORDWRAP*/, 0, 0);
if (nWordWrap > 0) AkelPad.Command(4209 /*IDM_VIEW_WORDWRAP*/);
if (! AkelPad.SendMessage(hEditWnd, 3127 /*AEM_GETCOLUMNSEL*/, 0, 0))
AkelPad.SendMessage(hEditWnd, 3128 /*AEM_UPDATESEL*/, 1 /*AESELT_COLUMNON*/, 0);
nLastLine = AkelPad.SendMessage(hEditWnd, 3129 /*AEM_GETLINENUMBER*/, 0 /*AEGL_LINECOUNT*/, 0);
nLastCol = LineMaxLength() + 1;
if (AkelPad.WindowRegisterClass(sClassName))
{
if (lpBuffer = AkelPad.MemAlloc(256 * _TSIZE))
{
hWndDlg = oSys.Call("User32::CreateWindowEx" + _TCHAR,
0, //dwExStyle
sClassName, //lpClassName
sTxtCaption, //lpWindowName
0x90CA0000, //WS_VISIBLE|WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX
0, //x
0, //y
345, //nWidth
650, //nHeight
hMainWnd, //hWndParent
0, //ID
hInstDLL, //hInstance
DialogCallback); //Script function callback. To use it class must be registered by WindowRegisterClass.
if (hWndDlg)
{
//Disable main window, to make dialog modal
oSys.Call("User32::EnableWindow", hMainWnd, false);
//Message loop
AkelPad.WindowGetMessage();
}
AkelPad.MemFree(lpBuffer);
}
AkelPad.WindowUnregisterClass(sClassName);
}
if (nWordWrap > 0) AkelPad.Command(4209 /*IDM_VIEW_WORDWRAP*/);
}
function DialogCallback(hWnd, uMsg, wParam, lParam)
{
var i, nLowParam;
if (uMsg == 1) //WM_CREATE
{
for (i = 1000; i < aWnd.length; ++i)
{
aWnd[i][WND] = oSys.Call("User32::CreateWindowEx" + _TCHAR,
aWnd[i][EXSTYLE], //dwExStyle
aWnd[i][CLASS], //lpClassName
0, //lpWindowName
aWnd[i][STYLE], //dwStyle
aWnd[i][X], //x
aWnd[i][Y], //y
aWnd[i][W], //nWidth
aWnd[i][H], //nHeight
hWnd, //hWndParent
i, //ID
hInstDLL, //hInstance
0); //lpParam
SetWindowFontAndText(aWnd[i][WND], hGuiFont, aWnd[i][TXT]);
}
CheckButtonsAll(0);
CheckUndoRedo();
bGetSel = GetSelection();
//Set window position
if ((nWndPosX == undefined) || (nWndPosY == undefined))
MoveWindow(hMainWnd, hWnd, "RT");
else
MoveWindow(hMainWnd, hWnd, [nWndPosX, nWndPosY]);
}
else if (uMsg == 7) //WM_SETFOCUS
{
oSys.Call("User32::SetFocus", aWnd[IDBEGCOL][WND]);
AkelPad.SendMessage(aWnd[IDBEGCOL][WND], 177 /*EM_SETSEL*/, 0, -1);
}
else if (uMsg == 256) //WM_KEYDOWN
{
if (wParam == 9) //VK_TAB
SetSelection();
else if (wParam == 27) //VK_ESCAPE
oSys.Call("User32::PostMessage" + _TCHAR, hWnd, 16 /*WM_CLOSE*/, 0, 0);
else if (wParam == 13) //VK_RETURN
{
if (! bIsReturn)
{
hFocus = oSys.Call("User32::GetFocus");
if ((hFocus != aWnd[IDSORT][WND]) && (hFocus != aWnd[IDUNDO][WND]) && (hFocus != aWnd[IDREDO][WND]))
oSys.Call("User32::PostMessage" + _TCHAR, hWnd, 273 /*WM_COMMAND*/, IDSORT, 0);
}
}
}
else if (uMsg == 257) //WM_KEYUP
bIsReturn = 0;
else if ((uMsg == 260) /*WM_SYSKEYDOWN*/ &&
(oSys.Call("User32::GetAsyncKeyState", 0xA0 /*VK_LSHIFT*/)))
{
if (wParam == 0x27) //VK_RIGHT
MoveWindow(hMainWnd, hWnd, "R");
else if (wParam == 0x25) //VK_LEFT
MoveWindow(hMainWnd, hWnd, "L");
else if (wParam == 0x28) //VK_DOWN
MoveWindow(hMainWnd, hWnd, "D");
else if (wParam == 0x26) //VK_UP
MoveWindow(hMainWnd, hWnd, "U");
else if (wParam == 0x23) //VK_END
MoveWindow(hMainWnd, hWnd, "E");
else if (wParam == 0x24) //VK_HOME
MoveWindow(hMainWnd, hWnd, "H");
else if (wParam == 0x22) //VK_NEXT
MoveWindow(hMainWnd, hWnd, "B");
else if (wParam == 0x21) //VK_PRIOR
MoveWindow(hMainWnd, hWnd, "T");
}
else if (uMsg == 273) //WM_COMMAND
{
nLowParam = LoWord(wParam);
if ((nLowParam == IDBEGCOL) || (nLowParam == IDENDCOL) ||
(nLowParam == IDBEGLINE) || (nLowParam == IDENDLINE) ||
(nLowParam == IDBEGCOL1) || (nLowParam == IDENDCOL1) ||
(nLowParam == IDBEGCOL2) || (nLowParam == IDENDCOL2) ||
(nLowParam == IDBEGCOL3) || (nLowParam == IDENDCOL3) ||
(nLowParam == IDBEGCOL4) || (nLowParam == IDENDCOL4) ||
(nLowParam == IDBEGCOL5) || (nLowParam == IDENDCOL5))
{
CheckEditValue(nLowParam);
if (bGetSel)
SetSelection();
}
else if (((nLowParam >= IDDESC1) && (nLowParam <= IDNUM1)) ||
((nLowParam >= IDDESC2) && (nLowParam <= IDNUM2)) ||
((nLowParam >= IDDESC3) && (nLowParam <= IDNUM3)) ||
((nLowParam >= IDDESC4) && (nLowParam <= IDNUM4)) ||
((nLowParam >= IDDESC5) && (nLowParam <= IDNUM5)))
{
CheckButtons1(nLowParam);
SetSelection();
}
else if ((nLowParam >= IDDESCALL) && (nLowParam <= IDCOPYTOCB))
{
CheckButtonsAll(nLowParam);
SetSelection();
}
else if (nLowParam == IDSORT)
{
oSys.Call("User32::SetFocus", aWnd[IDBEGCOL][WND]);
SetSelection();
if (SortColumns())
{
SetSelection();
CheckUndoRedo(nLowParam);
}
}
else if (nLowParam == IDUNDO)
{
bIsReturn = 1;
CheckUndoRedo(nLowParam);
oSys.Call("User32::SetFocus", aWnd[IDBEGCOL][WND]);
}
else if (nLowParam == IDREDO)
{
bIsReturn = 1;
CheckUndoRedo(nLowParam);
oSys.Call("User32::SetFocus", aWnd[IDBEGCOL][WND]);
}
}
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);
}
else
SetDefID(hWnd);
return 0;
}
function SetWindowFontAndText(hWnd, hFont, sText)
{
AkelPad.SendMessage(hWnd, 48 /*WM_SETFONT*/, hFont, true);
oSys.Call("User32::SetWindowText" + _TCHAR, hWnd, sText);
}
function MoveWindow(hWndParent, hWnd, vAction)
{
var aRectParent;
var aRect;
var nX;
var nY;
if (! hWndParent)
hWndParent=oSys.Call("User32::GetDesktopWindow");
aRectParent = GetWindowPos(hWndParent);
aRect = GetWindowPos(hWnd);
nX = aRect.left;
nY = aRect.top;
if (vAction == "R") //Move right
nX = aRect.left + ((aRect.left < aRectParent.right - 50) ? 20 : 0);
else if (vAction == "L") //Move left
nX = aRect.left - ((aRect.right > aRectParent.left + 50) ? 20 : 0);
else if (vAction == "D") //Move down
nY = aRect.top + ((aRect.top < aRectParent.bottom - 50) ? 20 : 0);
else if (vAction == "U") //Move up
nY = aRect.top - ((aRect.bottom > aRectParent.top + 50) ? 20 : 0);
else if (vAction == "E") //Move end (right)
nX = aRect.left + (aRectParent.right - aRect.right);
else if (vAction == "H") //Move home (left)
nX = aRect.left + (aRectParent.left - aRect.left);
else if (vAction == "B") //Move bottom
nY = aRect.top + (aRectParent.bottom - aRect.bottom);
else if (vAction == "T") //Move top
nY = aRect.top + (aRectParent.top - aRect.top);
else if (vAction == "C") //Center window
{
nX = aRectParent.left + ((aRectParent.right - aRectParent.left) / 2 - (aRect.right - aRect.left) / 2);
nY = aRectParent.top + ((aRectParent.bottom - aRectParent.top) / 2 - (aRect.bottom - aRect.top) / 2);
}
else if (vAction == "LT") //Move left top
{
nX = aRectParent.left;
nY = aRectParent.top;
}
else if (vAction == "RT") //Move right top
{
nX = aRect.left + (aRectParent.right - aRect.right);
nY = aRectParent.top;
}
else if (vAction == "LB") //Move left bottom
{
nX = aRectParent.left;
nY = aRect.top + (aRectParent.bottom - aRect.bottom);
}
else if (vAction == "RB") //Move right bottom
{
nX = aRect.left + (aRectParent.right - aRect.right);
nY = aRect.top + (aRectParent.bottom - aRect.bottom);
}
else
{
nX = vAction[0];
nY = vAction[1];
}
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 aRect = [];
oSys.Call("User32::GetWindowRect", hWnd, lpRect);
aRect.left = AkelPad.MemRead(_PtrAdd(lpRect, 0), DT_DWORD);
aRect.top = AkelPad.MemRead(_PtrAdd(lpRect, 4), DT_DWORD);
aRect.right = AkelPad.MemRead(_PtrAdd(lpRect, 8), DT_DWORD);
aRect.bottom = AkelPad.MemRead(_PtrAdd(lpRect, 12), DT_DWORD);
AkelPad.MemFree(lpRect);
return aRect;
}
function LoWord(nParam)
{
return (nParam & 0xFFFF);
}
function SetDefID(hWnd)
{
var nID = 1000;
var hFocus = oSys.Call("User32::GetFocus");
while ((nID < aWnd.length) && (hFocus != aWnd[nID][WND]))
++nID;
if ((nID != IDUNDO) && (nID != IDREDO))
nID = IDSORT;
oSys.Call("User32::DefDlgProc" + _TCHAR, hWnd, 1025 /*DM_SETDEFID*/, nID, 0);
}
function ReadWriteIni(bWrite)
{
var oFSO = new ActiveXObject("Scripting.FileSystemObject");
var sIniName = WScript.ScriptFullName.substring(0, WScript.ScriptFullName.lastIndexOf(".")) + ".ini";
var aRect;
var oFile;
var sIniTxt;
if (bWrite)
{
aRect = GetWindowPos(hWndDlg);
sIniTxt = 'nWndPosX=' + aRect.left + ';\r\n' +
'nWndPosY=' + aRect.top + ';\r\n' +
'aDesc=[' + aDesc + '];\r\n' +
'aIgCase=[' + aIgCase + '];\r\n' +
'aString=[' + aString + '];\r\n' +
'aLocale=[' + aLocale + '];\r\n' +
'aNum=[' + aNum + '];\r\n' +
'bDescAll=' + bDescAll + ';\r\n' +
'bIgCaseAll=' + bIgCaseAll + ';\r\n' +
'nMethod=' + nMethod + ';\r\n' +
'bReverse=' + bReverse + ';\r\n' +
'bCopyToCB=' + bCopyToCB + ';'
oFile = oFSO.OpenTextFile(sIniName, 2, true, 0);
oFile.Write(sIniTxt);
oFile.Close();
}
else if (oFSO.FileExists(sIniName))
{
try
{
eval(AkelPad.ReadFile(sIniName));
}
catch (oError)
{
}
}
}
function CheckButtonsAll(nButton)
{
var nDif = IDDESC2 - IDDESC1;
var i;
if (nButton == IDDESCALL)
{
bDescAll = AkelPad.SendMessage(aWnd[IDDESCALL][WND], BM_GETCHECK, 0, 0);
aDesc = [bDescAll, bDescAll, bDescAll, bDescAll, bDescAll];
}
else if (nButton == IDIGCASEALL)
{
bIgCaseAll = AkelPad.SendMessage(aWnd[IDIGCASEALL][WND], BM_GETCHECK, 0, 0);
aIgCase = [bIgCaseAll, bIgCaseAll, bIgCaseAll, bIgCaseAll, bIgCaseAll];
}
else if ((nButton == IDSTRINGALL) || (nButton == IDLOCALEALL) || (nButton == IDNUMALL))
{
if (nMethod == nButton - IDSTRINGALL + 1)
nMethod = 0;
else
{
nMethod = nButton - IDSTRINGALL + 1;
aString = [0,0,0,0,0];
aLocale = [0,0,0,0,0];
aNum = [0,0,0,0,0];
if (nMethod == 1)
aString = [1,1,1,1,1];
else if (nMethod == 2)
aLocale = [1,1,1,1,1];
else if (nMethod == 3)
aNum = [1,1,1,1,1];
}
}
else if (nButton == IDREVERSE)
bReverse = AkelPad.SendMessage(aWnd[IDREVERSE][WND], BM_GETCHECK, 0, 0);
else if (nButton == IDCOPYTOCB)
bCopyToCB = AkelPad.SendMessage(aWnd[IDCOPYTOCB][WND], BM_GETCHECK, 0, 0);
AkelPad.SendMessage(aWnd[IDDESCALL][WND], BM_SETCHECK, bDescAll, 0);
AkelPad.SendMessage(aWnd[IDIGCASEALL][WND], BM_SETCHECK, bIgCaseAll, 0);
AkelPad.SendMessage(aWnd[IDSTRINGALL][WND], BM_SETCHECK, (nMethod == 1), 0);
AkelPad.SendMessage(aWnd[IDLOCALEALL][WND], BM_SETCHECK, (nMethod == 2), 0);
AkelPad.SendMessage(aWnd[IDNUMALL][WND], BM_SETCHECK, (nMethod == 3), 0);
AkelPad.SendMessage(aWnd[IDREVERSE][WND], BM_SETCHECK, bReverse, 0);
AkelPad.SendMessage(aWnd[IDCOPYTOCB][WND], BM_SETCHECK, bCopyToCB, 0);
for (i = 0; i < 5; ++i)
{
AkelPad.SendMessage(aWnd[IDDESC1 + i * nDif][WND], BM_SETCHECK, aDesc[i], 0);
AkelPad.SendMessage(aWnd[IDIGCASE1 + i * nDif][WND], BM_SETCHECK, aIgCase[i], 0);
AkelPad.SendMessage(aWnd[IDSTRING1 + i * nDif][WND], BM_SETCHECK, aString[i], 0);
AkelPad.SendMessage(aWnd[IDLOCALE1 + i * nDif][WND], BM_SETCHECK, aLocale[i], 0);
AkelPad.SendMessage(aWnd[IDNUM1 + i * nDif][WND], BM_SETCHECK, aNum[i], 0);
}
for (i = IDSORTK1; i <= IDNUMALL; ++i)
oSys.Call("User32::EnableWindow", aWnd[i][WND], ! bReverse);
}
function CheckButtons1(nButton)
{
var nDif = IDDESC2 - IDDESC1;
var nKey;
var i;
if (((nButton - IDDESC1) % nDif) == 0)
{
aDesc[(nButton - IDDESC1) / nDif] = AkelPad.SendMessage(aWnd[nButton][WND], BM_GETCHECK, 0, 0);
if (aDesc[0] && aDesc[1] && aDesc[2] && aDesc[3] && aDesc[4])
bDescAll = 1;
else
bDescAll = 0;
AkelPad.SendMessage(aWnd[IDDESCALL][WND], BM_SETCHECK, bDescAll, 0);
}
else if (((nButton - IDIGCASE1) % nDif) == 0)
{
aIgCase[(nButton - IDIGCASE1) / nDif] = AkelPad.SendMessage(aWnd[nButton][WND], BM_GETCHECK, 0, 0);
if (aIgCase[0] && aIgCase[1] && aIgCase[2] && aIgCase[3] && aIgCase[4])
bIgCaseAll = 1;
else
bIgCaseAll = 0;
AkelPad.SendMessage(aWnd[IDIGCASEALL][WND], BM_SETCHECK, bIgCaseAll, 0);
}
else
{
nKey = Math.floor((nButton - IDDESC1) / nDif);
aString[nKey] = 0;
aLocale[nKey] = 0;
aNum[nKey] = 0;
if (((nButton - IDSTRING1) % nDif) == 0)
aString[nKey] = 1;
else if (((nButton - IDLOCALE1) % nDif) == 0)
aLocale[nKey] = 1;
else if (((nButton - IDNUM1) % nDif) == 0)
aNum[nKey] = 1;
AkelPad.SendMessage(aWnd[IDSTRING1 + nKey * nDif][WND], BM_SETCHECK, aString[nKey], 0);
AkelPad.SendMessage(aWnd[IDLOCALE1 + nKey * nDif][WND], BM_SETCHECK, aLocale[nKey], 0);
AkelPad.SendMessage(aWnd[IDNUM1 + nKey * nDif][WND], BM_SETCHECK, aNum[nKey], 0);
if (aString[0] && aString[1] && aString[2] && aString[3] && aString[4])
nMethod = 1;
else if (aLocale[0] && aLocale[1] && aLocale[2] && aLocale[3] && aLocale[4])
nMethod = 2;
else if (aNum[0] && aNum[1] && aNum[2] && aNum[3] && aNum[4])
nMethod = 3;
else
nMethod = 0;
AkelPad.SendMessage(aWnd[IDSTRINGALL][WND], BM_SETCHECK, (nMethod == 1), 0);
AkelPad.SendMessage(aWnd[IDLOCALEALL][WND], BM_SETCHECK, (nMethod == 2), 0);
AkelPad.SendMessage(aWnd[IDNUMALL][WND], BM_SETCHECK, (nMethod == 3), 0);
}
}
function CheckUndoRedo(nButton)
{
var sTxtUndo = aWnd[IDUNDO][TXT];
var sTxtRedo = aWnd[IDREDO][TXT];
if (nButton == IDSORT)
{
if (nUndoLimit < AkelPad.SendMessage(hEditWnd, 3084 /*AEM_GETUNDOLIMIT*/, 0, 0))
++nUndoLimit;
nRedoLimit = 0;
}
else if ((nButton == IDUNDO) && (nUndoLimit))
{
--nUndoLimit;
++nRedoLimit;
AkelPad.SendMessage(hEditWnd, 3077 /*AEM_UNDO*/, 0, 0);
}
else if ((nButton == IDREDO) && (nRedoLimit))
{
++nUndoLimit;
--nRedoLimit;
AkelPad.SendMessage(hEditWnd, 3078 /*AEM_REDO*/, 0, 0);
}
if (nUndoLimit)
sTxtUndo += " (" + nUndoLimit + ")";
if (nRedoLimit)
sTxtRedo += " (" + nRedoLimit + ")";
SetWindowFontAndText(aWnd[IDUNDO][WND], hGuiFont, sTxtUndo);
SetWindowFontAndText(aWnd[IDREDO][WND], hGuiFont, sTxtRedo);
oSys.Call("User32::EnableWindow", aWnd[IDUNDO][WND], nUndoLimit);
oSys.Call("User32::EnableWindow", aWnd[IDREDO][WND], nRedoLimit);
}
function CheckEditValue(nIdWnd)
{
var sEditValue;
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[nIdWnd][WND], lpBuffer, 256);
sEditValue = AkelPad.MemRead(lpBuffer, _TSTR);
if ((nIdWnd == IDBEGLINE) || (nIdWnd == IDENDLINE))
{
if (sEditValue == 0)
{
SetWindowFontAndText(aWnd[nIdWnd][WND], hGuiFont, "1");
AkelPad.SendMessage(aWnd[nIdWnd][WND], 177 /*EM_SETSEL*/, 0, -1);
}
else if (sEditValue > nLastLine)
{
SetWindowFontAndText(aWnd[nIdWnd][WND], hGuiFont, String(nLastLine));
AkelPad.SendMessage(aWnd[nIdWnd][WND], 177 /*EM_SETSEL*/, 0, -1);
}
}
else if ((nIdWnd == IDBEGCOL) || (nIdWnd == IDENDCOL) ||
(nIdWnd == IDBEGCOL1) || (nIdWnd == IDENDCOL1))
{
if (sEditValue == 0)
{
SetWindowFontAndText(aWnd[nIdWnd][WND], hGuiFont, "1");
AkelPad.SendMessage(aWnd[nIdWnd][WND], 177 /*EM_SETSEL*/, 0, -1);
}
else if (sEditValue > nLastCol)
{
SetWindowFontAndText(aWnd[nIdWnd][WND], hGuiFont, String(nLastCol));
AkelPad.SendMessage(aWnd[nIdWnd][WND], 177 /*EM_SETSEL*/, 0, -1);
}
}
else if ((nIdWnd == IDBEGCOL2) || (nIdWnd == IDENDCOL2) ||
(nIdWnd == IDBEGCOL3) || (nIdWnd == IDENDCOL3) ||
(nIdWnd == IDBEGCOL4) || (nIdWnd == IDENDCOL4) ||
(nIdWnd == IDBEGCOL5) || (nIdWnd == IDENDCOL5))
{
if (sEditValue == "0")
{
SetWindowFontAndText(aWnd[nIdWnd][WND], hGuiFont, "");
AkelPad.SendMessage(aWnd[nIdWnd][WND], 177 /*EM_SETSEL*/, 0, -1);
}
else if (sEditValue > nLastCol)
{
SetWindowFontAndText(aWnd[nIdWnd][WND], hGuiFont, String(nLastCol));
AkelPad.SendMessage(aWnd[nIdWnd][WND], 177 /*EM_SETSEL*/, 0, -1);
}
}
}
function GetSelection()
{
var lpBegSel = AkelPad.MemAlloc(_X64 ? 24 : 12 /*sizeof(AECHARINDEX)*/);
var lpEndSel = AkelPad.MemAlloc(_X64 ? 24 : 12 /*sizeof(AECHARINDEX)*/);
var nLine1, nLine2, nCol1, nCol2;
AkelPad.SendMessage(hEditWnd, 3123 /*AEM_EXGETSEL*/, lpBegSel, lpEndSel);
nLine1 = AkelPad.MemRead(lpBegSel, DT_DWORD) + 1;
nLine2 = AkelPad.MemRead(lpEndSel, DT_DWORD) + 1;
if (AkelPad.MemRead(_PtrAdd(lpBegSel, _X64 ? 16 : 8), DT_DWORD) < AkelPad.MemRead(_PtrAdd(lpEndSel, _X64 ? 16 : 8), DT_DWORD))
{
nCol1 = AkelPad.MemRead(_PtrAdd(lpBegSel, _X64 ? 16 : 8), DT_DWORD) + 1;
nCol2 = AkelPad.MemRead(_PtrAdd(lpEndSel, _X64 ? 16 : 8), DT_DWORD) + 1;
}
else
{
nCol1 = AkelPad.MemRead(_PtrAdd(lpEndSel, _X64 ? 16 : 8), DT_DWORD) + 1;
nCol2 = AkelPad.MemRead(_PtrAdd(lpBegSel, _X64 ? 16 : 8), DT_DWORD) + 1;
}
SetWindowFontAndText(aWnd[IDBEGLINE][WND], hGuiFont, String(nLine1));
SetWindowFontAndText(aWnd[IDENDLINE][WND], hGuiFont, String(nLine2));
SetWindowFontAndText(aWnd[IDBEGCOL][WND], hGuiFont, String(nCol1));
SetWindowFontAndText(aWnd[IDENDCOL][WND], hGuiFont, String(nCol2));
SetWindowFontAndText(aWnd[IDBEGCOL1][WND], hGuiFont, String(nCol1));
SetWindowFontAndText(aWnd[IDENDCOL1][WND], hGuiFont, String(nCol2));
AkelPad.MemFree(lpBegSel);
AkelPad.MemFree(lpEndSel);
return 1;
}
function SetSelection()
{
var hWndFocus = oSys.Call("User32::GetFocus");
var lpSelect = AkelPad.MemAlloc(_X64 ? 56 : 32 /*sizeof(AESELECTION)*/);
var lpBegSel = lpSelect;
var lpEndSel = _PtrAdd(lpSelect, _X64 ? 24 : 12);
var lpSelFlag = _PtrAdd(lpSelect, _X64 ? 48 : 24);
var nLine1, nLine2, nCol1, nCol2, i;
for (i = 1000; i < aWnd.length; ++i)
{
if (aWnd[i][WND] == hWndFocus)
break;
}
if ((i >= IDBEGCOL1) && (i <= IDNUM1))
i = IDBEGCOL1;
else if ((i >= IDBEGCOL2) && (i <= IDNUM2))
i = IDBEGCOL2;
else if ((i >= IDBEGCOL3) && (i <= IDNUM3))
i = IDBEGCOL3;
else if ((i >= IDBEGCOL4) && (i <= IDNUM4))
i = IDBEGCOL4;
else if ((i >= IDBEGCOL5) && (i <= IDNUM5))
i = IDBEGCOL5;
else
i = IDBEGCOL;
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[IDBEGLINE][WND], lpBuffer, 256);
nLine1 = Number(AkelPad.MemRead(lpBuffer, _TSTR)) - 1;
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[IDENDLINE][WND], lpBuffer, 256);
nLine2 = Number(AkelPad.MemRead(lpBuffer, _TSTR)) - 1;
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[i][WND], lpBuffer, 256);
nCol1 = Number(AkelPad.MemRead(lpBuffer, _TSTR)) - 1;
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[i + 1][WND], lpBuffer, 256);
nCol2 = Number(AkelPad.MemRead(lpBuffer, _TSTR)) - 1;
if ((nCol1 < 0) || (nCol2 < 0))
nCol1 = nCol2 = 0;
AkelPad.MemCopy(lpBegSel, nLine1, DT_DWORD);
AkelPad.MemCopy(_PtrAdd(lpBegSel, _X64 ? 16 : 8), nCol1, DT_DWORD);
AkelPad.MemCopy(lpEndSel, nLine2, DT_DWORD);
AkelPad.MemCopy(_PtrAdd(lpEndSel, _X64 ? 16 : 8), nCol2, DT_DWORD);
AkelPad.MemCopy(lpSelFlag, 1, DT_DWORD);
AkelPad.SendMessage(hEditWnd, 3132 /*AEM_INDEXUPDATE*/, 0, lpBegSel);
AkelPad.SendMessage(hEditWnd, 3132 /*AEM_INDEXUPDATE*/, 0, lpEndSel);
AkelPad.SendMessage(hEditWnd, 3126 /*AEM_SETSEL*/, 0, lpSelect);
AkelPad.MemFree(lpSelect);
}
function LineMaxLength()
{
var nMaxLenL = 0;
var nBegLine;
var nLenLine;
var i;
for (i = 0; i < nLastLine; ++i)
{
nBegLine = AkelPad.SendMessage(hEditWnd, 187 /*EM_LINEINDEX*/, i, 0);
nLenLine = AkelPad.SendMessage(hEditWnd, 193 /*EM_LINELENGTH*/, nBegLine, 0);
if (nLenLine > nMaxLenL)
nMaxLenL = nLenLine;
}
return nMaxLenL;
}
function SortColumns()
{
var aDesc = new Array(5);
var aIgCase = new Array(5);
var aString = new Array(5);
var aLocale = new Array(5);
var aNum = new Array(5);
var aCol = [[], [], [], [], [], []];
var aTxt = [];
var sText = "";
var nDif = IDBEGCOL2 - IDBEGCOL1;
var nLine1;
var nLine2;
var i;
for (i = 0; i < 5; ++i)
{
aDesc[i] = AkelPad.SendMessage(aWnd[IDDESC1 + i * nDif][WND], BM_GETCHECK, 0, 0);
aIgCase[i] = AkelPad.SendMessage(aWnd[IDIGCASE1 + i * nDif][WND], BM_GETCHECK, 0, 0);
aString[i] = AkelPad.SendMessage(aWnd[IDSTRING1 + i * nDif][WND], BM_GETCHECK, 0, 0);
aLocale[i] = AkelPad.SendMessage(aWnd[IDLOCALE1 + i * nDif][WND], BM_GETCHECK, 0, 0);
aNum[i] = AkelPad.SendMessage(aWnd[IDNUM1 + i * nDif][WND], BM_GETCHECK, 0, 0);
}
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[IDBEGCOL][WND], lpBuffer, 256);
aCol[0][0] = Number(AkelPad.MemRead(lpBuffer, _TSTR));
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[IDENDCOL][WND], lpBuffer, 256);
aCol[0][1] = Number(AkelPad.MemRead(lpBuffer, _TSTR));
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[IDBEGLINE][WND], lpBuffer, 256);
nLine1 = Number(AkelPad.MemRead(lpBuffer, _TSTR));
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[IDENDLINE][WND], lpBuffer, 256);
nLine2 = Number(AkelPad.MemRead(lpBuffer, _TSTR));
for (i = 1; i < 6; ++i)
{
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[IDBEGCOL1 + (i - 1) * nDif][WND], lpBuffer, 256);
aCol[i][0] = Number(AkelPad.MemRead(lpBuffer, _TSTR));
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[IDENDCOL1 + (i - 1) * nDif][WND], lpBuffer, 256);
aCol[i][1] = Number(AkelPad.MemRead(lpBuffer, _TSTR));
if ((aCol[i][0] == 0) || (aCol[i][1] == 0) || (aCol[i][0] == aCol[i][1]))
{
aCol[i][0] = aCol[i][1] = 0;
SetWindowFontAndText(aWnd[IDBEGCOL1 + (i - 1) * nDif][WND], hGuiFont, String(aCol[i][0]));
SetWindowFontAndText(aWnd[IDENDCOL1 + (i - 1) * nDif][WND], hGuiFont, String(aCol[i][1]));
}
}
if (aCol[0][0] == aCol[0][1])
{
AkelPad.MessageBox(hWndDlg, sTxtNoRangeC, sTxtCaption, 48 /*MB_ICONEXCLAMATION*/);
oSys.Call("User32::SetFocus", aWnd[IDENDCOL][WND]);
AkelPad.SendMessage(aWnd[IDENDCOL][WND], 177 /*EM_SETSEL*/, 0, -1);
return 0;
}
if (nLine1 == nLine2)
{
AkelPad.MessageBox(hWndDlg, sTxtNoRangeL, sTxtCaption, 48 /*MB_ICONEXCLAMATION*/);
oSys.Call("User32::SetFocus", aWnd[IDENDLINE][WND]);
AkelPad.SendMessage(aWnd[IDENDLINE][WND], 177 /*EM_SETSEL*/, 0, -1);
return 0;
}
if ((aCol[1][0] == aCol[1][1]) && (! bReverse))
{
AkelPad.MessageBox(hWndDlg, sTxtNoKey1, sTxtCaption, 48 /*MB_ICONEXCLAMATION*/);
oSys.Call("User32::SetFocus", aWnd[IDENDCOL1][WND]);
AkelPad.SendMessage(aWnd[IDENDCOL1][WND], 177 /*EM_SETSEL*/, 0, -1);
return 0;
}
for (i = 5; i >= 0; --i)
{
if (aCol[i][0] == 0)
{
aCol.splice(i, 1);
aDesc.splice(i - 1, 1);
aIgCase.splice(i - 1, 1);
aString.splice(i - 1, 1);
aLocale.splice(i - 1, 1);
aNum.splice(i - 1, 1);
}
else
{
--aCol[i][0];
--aCol[i][1];
}
}
--nLine1;
--nLine2;
if (bReverse)
{
aTxt = GetTextRangeColumn([nLine1, aCol[0][0]], [nLine2, aCol[0][1]]);
sText = aTxt.reverse().join("\r");
}
else
{
aTxt.length = aCol.length;
for (i = 0; i < aTxt.length; ++i)
aTxt[i] = GetTextRangeColumn([nLine1, aCol[i][0]], [nLine2, aCol[i][1]]);
aTxt = ArrayTransp(aTxt);
ArraySort(aTxt, aDesc, aIgCase, aString, aLocale, aNum);
for (i = 0; i < aTxt.length; ++i)
{
sText += aTxt[i][0] + "\r";
}
sText = sText.slice(0, -1);
}
AkelPad.SendMessage(aWnd[IDBEGCOL][WND], 177 /*EM_SETSEL*/, 0, -1);
if (bCopyToCB)
{
AkelPad.SetClipboardText(sText);
return 0;
}
else
{
AkelPad.ReplaceSel(sText);
return 1;
}
}
function GetTextRangeColumn(aBeg, aEnd, bReturnText, nNewLine, bFillSpaces)
{
var nBegLine1;
var nBegLine2;
var nLenLine2;
var nLine1;
var nLine2;
var nCol1;
var nCol2;
var aLines;
var nWidth;
var i;
if (aBeg[0] < aEnd[0])
{
nLine1 = aBeg[0];
nLine2 = aEnd[0];
}
else
{
nLine1 = aEnd[0];
nLine2 = aBeg[0];
}
if (aBeg[1] < aEnd[1])
{
nCol1 = aBeg[1];
nCol2 = aEnd[1];
}
else
{
nCol1 = aEnd[1];
nCol2 = aBeg[1];
}
nBegLine1 = AkelPad.SendMessage(hEditWnd, 187 /*EM_LINEINDEX*/, nLine1, 0);
nBegLine2 = AkelPad.SendMessage(hEditWnd, 187 /*EM_LINEINDEX*/, nLine2, 0);
nLenLine2 = AkelPad.SendMessage(hEditWnd, 193 /*EM_LINELENGTH*/, nBegLine2, 0);
aLines = AkelPad.GetTextRange(nBegLine1, nBegLine2 + nLenLine2, 1 /*"\r"*/).split("\r");
nWidth = nCol2 - nCol1;
for (i = 0; i < aLines.length; ++i)
{
aLines[i] = aLines[i].substring(nCol1, nCol2);
if (bFillSpaces)
while (aLines[i].length < nWidth)
aLines[i] += " ";
}
if (bReturnText)
{
if ((! nNewLine) || (nNewLine == 1))
pNewLine = "\r";
else if (nNewLine == 2)
pNewLine = "\n";
else
pNewLine = "\r\n";
return aLines.join(pNewLine);
}
else
return aLines;
}
function ArrayTransp(aArr)
{
var nLen1 = aArr.length;
var nLen2 = aArr[0].length;
var aArr2 = [];
var i, n;
aArr2.length = nLen2;
for (n = 0; n < nLen2; ++n)
{
aArr2[n] = [];
for (i = 0; i < nLen1; ++i)
{
aArr2[n].push(aArr[i][n]);
}
}
return aArr2;
}
function ArraySort(aTxt, aDesc, aIgCase, aString, aLocale, aNum)
{
var lpStrA = AkelPad.MemAlloc(nLastCol * _TSIZE);
var lpStrB = AkelPad.MemAlloc(nLastCol * _TSIZE);
var nComp;
var i;
aTxt.sort(function(a, b) {
for (i = 0; i < aDesc.length; ++i)
{
nComp = CompareValue(a[i + 1], b[i + 1], lpStrA, lpStrB, aDesc[i], aIgCase[i], aString[i], aLocale[i], aNum[i]);
if (nComp != 0)
return nComp;
}
return 0; });
AkelPad.MemFree(lpStrA);
AkelPad.MemFree(lpStrB);
}
function CompareValue(ValA, ValB, lpStrA, lpStrB, bDesc, bIgCase, bString, bLocale, bNum)
{
var nResult;
if (bString)
{
if (bIgCase)
{
ValA = ValA.toUpperCase();
ValB = ValB.toUpperCase();
}
if (ValA > ValB)
nResult = bDesc ? -1 : 1;
else if (ValA < ValB)
nResult = bDesc ? 1 : -1;
else
nResult = 0;
}
else if (bLocale)
{
AkelPad.MemCopy(lpStrA, ValA, _TSTR);
AkelPad.MemCopy(lpStrB, ValB, _TSTR);
nResult = oSys.Call("Kernel32::lstrcmp" + (bIgCase ? "i" : "") + _TCHAR, lpStrA, lpStrB);
if (bDesc)
nResult = -nResult;
}
else
{
var oRegExp = /(-?\d+\.?\d*)|(-?\.\d+)/;
ValA = oRegExp.exec(ValA);
ValB = oRegExp.exec(ValB);
ValA = ValA ? parseFloat(ValA[0]) : 0;
ValB = ValB ? parseFloat(ValB[0]) : 0;
nResult = bDesc ? (ValB - ValA) : (ValA - ValB);
}
return nResult;
}
-
Offline
- Posts: 7
- Joined: Mon Nov 09, 2020 1:07 am
Řazení a ůpravy v řádcích
Sort in Lines script with GUI
Czech Interface lang in within script SortLines.js from KDJ .
save as UTF8+BOM
SortLines.js
Czech Interface lang in within script SortLines.js from KDJ .
save as UTF8+BOM
SortLines.js
Code: Select all
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=10988#p10988
// Version: 2019-07-01
// Author: KDJ
//
// *** Sort lines ***
//
// Sort lines according to two keys: by line length and by string, alphabetically or numerically; removes duplicate lines, reverses the order of lines
// Cz Řazení řádků podle dvou kláves: podle délky řádku a podle řetězce, abecedně nebo číselně; odstraní duplicitní řádky, obrátí pořadí řádků
//
// Usage:
// Call("Scripts::Main", 1, "SortLines.js")
//
// Shortcut keys in dialog box:
// Klávesové zkratky v dialogovém okně:
// Enter - Sort
// Esc - Close
// Shift+Alt+Right (Left, Down, Up, End, Home, PgDn, PgUp) - move dialog box(přesunout dialogové okno).
if (AkelPad.GetLangId(0 /*LANGID_FULL*/) == 0x0415) //Polish
{
var sTxtCaption = "Sortowanie wierszy";
var sTxtRange = "Zakres";
var sTxtFrom = "Od";
var sTxtTo = "Do";
var sTxtLines = "Wiersze:";
var sTxtColumns = "&Kolumny:";
var sTxtKeys = "Klucze sortowania";
var sTxtKey1 = "Klucz &1 - Długość wiersza";
var sTxtKey2 = "Klucz &2 - Zawartość wiersza";
var sTxtRTL = "Czytaj od prawej do lewej";
var sTxtEntLine = "Cały &wiersz";
var sTxtDesc = "&Malejąco";
var sTxtIgCase = "&Ignoruj wlk. liter";
var sTxtString = "&String";
var sTxtLocale = "&Alfabetycznie";
var sTxtNum = "&Numerycznie";
var sTxtSortAnd = "Sortuj, a następnie";
var sTxtRemoDuKey = "&Usuń wiersze z duplikatami kluczy";
var sTxtExtrDuKey = "&Zachowaj tylko wiersze z duplikatami kluczy";
var sTxtExtrUnKey = "Zac&howaj tylko wiersze z unikalnymi kluczami";
var sTxtNoSort = "Nie sortuj, ale";
var sTxtReverse = "&Odwróć kolejność wierszy";
var sTxtCopyToCB = "Wynik kopiuj do schowka, nie zmieniaj &tekstu";
var sTxtUsePlug = "Użyj wtyczki &Format";
var sTxtSort = "Sortuj";
var sTxtUndo = "&Cofnij";
var sTxtRedo = "&Powtórz";
var sTxtNoRangeL = "Brak zakresu wierszy.";
var sTxtNoKey2 = "Brak zakresu kolumn w drugim kluczu sortowania.";
}
else if (AkelPad.GetLangId(0 /*LANGID_FULL*/) == 0x0419) //Russian translation by AZJIO
{
var sTxtCaption = "Сортировка строк";
var sTxtRange = "Диапазон строк";
var sTxtFrom = "От";
var sTxtTo = "До";
var sTxtLines = "Строки:";
var sTxtColumns = "&Колонки:";
var sTxtKeys = "Сортировать по ключам";
var sTxtKey1 = "Ключ &1 - По длине строки";
var sTxtKey2 = "Ключ &2 - По содержимому";
var sTxtRTL = "Читать справа налево";
var sTxtEntLine = "Вычислять всю &строку";
var sTxtDesc = "&По убыванию";
var sTxtIgCase = "&Игнор регистр";
var sTxtString = "&Строка";
var sTxtLocale = "&По алфавиту";
var sTxtNum = "&По номерам";
var sTxtSortAnd = "Сортировать, и далее:";
var sTxtRemoDuKey = "&Удалить строки с дубль-ключами";
var sTxtExtrDuKey = "&Оставить строки только с дубль-ключами";
var sTxtExtrUnKey = "Оставить строки с уникальными ключами";
var sTxtNoSort = "Не сортировать, но:";
var sTxtReverse = "&Обратный порядок строк";
var sTxtCopyToCB = "Результат в буфер обмена, не изменяя документ";
var sTxtUsePlug = "Использовать плагин &Format";
var sTxtSort = "Сортировать";
var sTxtUndo = "&Отменить";
var sTxtRedo = "&Вернуть";
var sTxtNoRangeL = "Нет диапазона строк.";
var sTxtNoKey2 = "Нет диапазона колонок во 2-м ключе сортировки.";
}
else if (AkelPad.GetLangId(0 /*LANGID_FULL*/) == 0x0405) //Czech translation by r.zapa
{
var sTxtCaption = "Řazení řádků";
var sTxtRange = "Rozsah řádků";
var sTxtFrom = "Od";
var sTxtTo = "Do";
var sTxtLines = "Řádky:";
var sTxtColumns = "&Sloupce:";
var sTxtKeys = "Seřadit podle klíčů";
var sTxtKey1 = "Klíč &1-podle délky řádku";
var sTxtKey2 = "Klíč &2-podle obsahu";
var sTxtRTL = "Číst zprava doleva";
var sTxtEntLine = "Vypočítat celý &řádek";
var sTxtDesc = "&Sestupně";
var sTxtIgCase = "&Ignor Velik.písm.";
var sTxtString = "&Řetězec";
var sTxtLocale = "&Dle abecedy";
var sTxtNum = "&Podle čísel";
var sTxtSortAnd = "Seřadit, a další:";
var sTxtRemoDuKey = "&Odstranit řádky s dvojitými klíči";
var sTxtExtrDuKey = "&Ponechat řádky pouze s dvojitými klíči";
var sTxtExtrUnKey = "Nechte řádky s &jedinečnými klíči";
var sTxtNoSort = "Ne třídit, ale:";
var sTxtReverse = "&Reverzní pořadí řádků";
var sTxtCopyToCB = "Výsledek do schránky bez změny dokumentu";
var sTxtUsePlug = "Použít plugin &Format";
var sTxtSort = "Třídit";
var sTxtUndo = "&Zrušit";
var sTxtRedo = "&Vrátit";
var sTxtNoRangeL = "Žádný rozsah řádků.";
var sTxtNoKey2 = "Žádný rozsah sloupců ve 2. klíči řazení.";
}
else
{
var sTxtCaption = "Sort lines";
var sTxtRange = "Range";
var sTxtFrom = "From";
var sTxtTo = "To";
var sTxtLines = "Lines:";
var sTxtColumns = "&Columns:";
var sTxtKeys = "Keys";
var sTxtKey1 = "Key &1 - Line length";
var sTxtKey2 = "Key &2 - Line content";
var sTxtRTL = "Read from right to left";
var sTxtEntLine = "&Entire line";
var sTxtDesc = "&Descending";
var sTxtIgCase = "&Ignore case";
var sTxtString = "&String";
var sTxtLocale = "&Alphabetically";
var sTxtNum = "&Numerically";
var sTxtSortAnd = "Sort, and also";
var sTxtRemoDuKey = "Re&move lines with duplicate keys";
var sTxtExtrDuKey = "E&xtract lines with duplicate keys";
var sTxtExtrUnKey = "Extra&ct lines with unique keys";
var sTxtNoSort = "Not sort, but";
var sTxtReverse = "Reverse &order of lines";
var sTxtCopyToCB = "Resul&t copy to clipboard, do not replace text";
var sTxtUsePlug = "Use &Format plugin";
var sTxtSort = "Sort";
var sTxtUndo = "&Undo";
var sTxtRedo = "&Redo";
var sTxtNoRangeL = "There is no range of lines.";
var sTxtNoKey2 = "There is no range of columns in second key.";
}
var DT_DWORD = 3;
var BM_SETCHECK = 241;
var oSys = AkelPad.SystemFunction();
var hMainWnd = AkelPad.GetMainWnd();
var hEditWnd = AkelPad.GetEditWnd();
var hGuiFont = oSys.Call("Gdi32::GetStockObject", 17 /*DEFAULT_GUI_FONT*/);
var hInstDLL = AkelPad.GetInstanceDll();
var sClassName = "AkelPad::Scripts::" + WScript.ScriptName + "::" + hInstDLL;
var bKey1 = 0;
var bDescLen = 0;
var bKey2 = 1;
var bRTL = 0;
var bEntLine = 0;
var bDesc = 0;
var bIgCase = 1;
var nMethod = 1;
var nSortAnd = 0;
var nNoSort = 0;
var bCopyToCB = 0;
var bUsePlug = 0;
var nUndoLimit = 0;
var nRedoLimit = 0;
var nWordWrap;
var nLastCol;
var hWndDlg;
var lpBuffer;
var bGetSel;
var bIsReturn;
var hFocus;
var nWndPosX;
var nWndPosY;
ReadWriteIni(0);
var aWnd = [];
var IDRANGE = 1000;
var IDFROM = 1001;
var IDTO = 1002;
var IDLINES = 1003;
var IDBEGLINE = 1004;
var IDENDLINE = 1005;
var IDSORT1 = 1006;
var IDKEY1 = 1007;
var IDDESCLEN = 1008;
var IDSORT2 = 1009;
var IDKEY2 = 1010;
var IDRTL = 1011;
var IDENTLINE = 1012;
var IDFROM2 = 1013;
var IDTO2 = 1014;
var IDCOLUMNS = 1015;
var IDBEGCOL = 1016;
var IDENDCOL = 1017;
var IDDESC = 1018;
var IDIGCASE = 1019;
var IDSORT3 = 1020;
var IDSTRING = 1021;
var IDLOCALE = 1022;
var IDNUM = 1023;
var IDSORT4 = 1024;
var IDREMODUKEY = 1025;
var IDEXTRDUKEY = 1026;
var IDEXTRUNKEY = 1027;
var IDNOSORT = 1028;
var IDREVERSE = 1029;
var IDREMODULIN = 1030;
var IDEXTRDULIN = 1031;
var IDEXTRUNLIN = 1032;
var IDCOPYTOCB = 1033;
var IDUSEPLUG = 1034;
var IDSORT = 1035;
var IDUNDO = 1036;
var IDREDO = 1037;
var CLASS = 0;
var WND = 1;
var EXSTYLE = 2;
var STYLE = 3;
var X = 4;
var Y = 5;
var W = 6;
var H = 7;
var TXT = 8;
//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
//0x50010003 - WS_VISIBLE|WS_CHILD|WS_TABSTOP|BS_AUTOCHECKBOX
//0x50012080 - WS_VISIBLE|WS_CHILD|WS_TABSTOP|ES_AUTOHSCROLL|ES_NUMBER
//Windows CLASS, WND, EXSTYLE, STYLE, X, Y, W, H, TXT
aWnd[IDRANGE ] = ["BUTTON", 0, 0, 0x50000007, 10, 10, 185, 70, sTxtRange];
aWnd[IDFROM ] = ["STATIC", 0, 0, 0x50000000, 70, 30, 55, 13, sTxtFrom];
aWnd[IDTO ] = ["STATIC", 0, 0, 0x50000000, 130, 30, 55, 13, sTxtTo];
aWnd[IDLINES ] = ["STATIC", 0, 0, 0x50000000, 20, 45, 50, 13, sTxtLines];
aWnd[IDBEGLINE ] = ["STATIC", 0, 0x200, 0x50000000, 70, 45, 55, 20, ""];
aWnd[IDENDLINE ] = ["STATIC", 0, 0x200, 0x50000000, 130, 45, 55, 20, ""];
aWnd[IDSORT1 ] = ["BUTTON", 0, 0, 0x50000007, 10, 90, 290, 52, sTxtKeys];
aWnd[IDKEY1 ] = ["BUTTON", 0, 0, 0x50010003, 20, 115, 150, 16, sTxtKey1];
aWnd[IDDESCLEN ] = ["BUTTON", 0, 0, 0x50010003, 205, 115, 90, 16, sTxtDesc];
aWnd[IDSORT2 ] = ["BUTTON", 0, 0, 0x50000007, 10, 135, 290, 130, ""];
aWnd[IDKEY2 ] = ["BUTTON", 0, 0, 0x50010003, 20, 150, 150, 16, sTxtKey2];
aWnd[IDRTL ] = ["BUTTON", 0, 0, 0x50010003, 40, 170, 140, 16, sTxtRTL];
aWnd[IDENTLINE ] = ["BUTTON", 0, 0, 0x50010003, 40, 190, 140, 16, sTxtEntLine];
aWnd[IDFROM2 ] = ["STATIC", 0, 0, 0x50000000, 70, 215, 55, 13, sTxtFrom];
aWnd[IDTO2 ] = ["STATIC", 0, 0, 0x50000000, 130, 215, 55, 13, sTxtTo];
aWnd[IDCOLUMNS ] = ["STATIC", 0, 0, 0x50000000, 20, 230, 50, 13, sTxtColumns];
aWnd[IDBEGCOL ] = ["EDIT", 0, 0x200, 0x50012080, 70, 230, 55, 20, ""];
aWnd[IDENDCOL ] = ["EDIT", 0, 0x200, 0x50012080, 130, 230, 55, 20, ""];
aWnd[IDDESC ] = ["BUTTON", 0, 0, 0x50010003, 205, 150, 90, 16, sTxtDesc];
aWnd[IDIGCASE ] = ["BUTTON", 0, 0, 0x50010003, 205, 170, 90, 16, sTxtIgCase];
aWnd[IDSORT3 ] = ["BUTTON", 0, 0, 0x50000007, 195, 185, 105, 80, ""];
aWnd[IDSTRING ] = ["BUTTON", 0, 0, 0x50000009, 205, 200, 90, 16, sTxtString];
aWnd[IDLOCALE ] = ["BUTTON", 0, 0, 0x50000009, 205, 220, 90, 16, sTxtLocale];
aWnd[IDNUM ] = ["BUTTON", 0, 0, 0x50000009, 205, 240, 90, 16, sTxtNum];
aWnd[IDSORT4 ] = ["BUTTON", 0, 0, 0x50000007, 10, 275, 290, 85, sTxtSortAnd];
aWnd[IDREMODUKEY] = ["BUTTON", 0, 0, 0x50010003, 60, 295, 230, 16, sTxtRemoDuKey];
aWnd[IDEXTRDUKEY] = ["BUTTON", 0, 0, 0x50010003, 60, 315, 230, 16, sTxtExtrDuKey];
aWnd[IDEXTRUNKEY] = ["BUTTON", 0, 0, 0x50010003, 60, 335, 230, 16, sTxtExtrUnKey];
aWnd[IDNOSORT ] = ["BUTTON", 0, 0, 0x50000007, 10, 370, 290, 105, sTxtNoSort];
aWnd[IDREVERSE ] = ["BUTTON", 0, 0, 0x50010003, 60, 390, 230, 16, sTxtReverse];
aWnd[IDREMODULIN] = ["BUTTON", 0, 0, 0x50010003, 60, 410, 230, 16, sTxtRemoDuKey];
aWnd[IDEXTRDULIN] = ["BUTTON", 0, 0, 0x50010003, 60, 430, 230, 16, sTxtExtrDuKey];
aWnd[IDEXTRUNLIN] = ["BUTTON", 0, 0, 0x50010003, 60, 450, 230, 16, sTxtExtrUnKey];
aWnd[IDCOPYTOCB ] = ["BUTTON", 0, 0, 0x50010003, 20, 485, 270, 16, sTxtCopyToCB];
aWnd[IDUSEPLUG ] = ["BUTTON", 0, 0, 0x50010003, 20, 505, 270, 16, sTxtUsePlug];
aWnd[IDSORT ] = ["BUTTON", 0, 0, 0x50010000, 220, 10, 80, 23, sTxtSort];
aWnd[IDUNDO ] = ["BUTTON", 0, 0, 0x50010000, 220, 35, 80, 23, sTxtUndo];
aWnd[IDREDO ] = ["BUTTON", 0, 0, 0x50010000, 220, 60, 80, 23, sTxtRedo];
if (hEditWnd)
{
nWordWrap = AkelPad.SendMessage(hEditWnd, 3241 /*AEM_GETWORDWRAP*/, 0, 0);
if (nWordWrap > 0) AkelPad.Command(4209 /*IDM_VIEW_WORDWRAP*/);
if (AkelPad.WindowRegisterClass(sClassName))
{
if (lpBuffer = AkelPad.MemAlloc(256 * _TSIZE))
{
hWndDlg = oSys.Call("User32::CreateWindowEx" + _TCHAR,
0, //dwExStyle
sClassName, //lpClassName
sTxtCaption, //lpWindowName
0x90CA0000, //WS_VISIBLE|WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX
0, //x
0, //y
315, //nWidth
560, //nHeight
hMainWnd, //hWndParent
0, //ID
hInstDLL, //hInstance
DialogCallback); //Script function callback. To use it class must be registered by WindowRegisterClass.
if (hWndDlg)
{
//Disable main window, to make dialog modal
oSys.Call("User32::EnableWindow", hMainWnd, false);
//Message loop
AkelPad.WindowGetMessage();
}
AkelPad.MemFree(lpBuffer);
}
AkelPad.WindowUnregisterClass(sClassName);
}
if (nWordWrap > 0) AkelPad.Command(4209 /*IDM_VIEW_WORDWRAP*/);
}
function DialogCallback(hWnd, uMsg, wParam, lParam)
{
var i, nLowParam;
if (uMsg == 1) //WM_CREATE
{
for (i = 1000; i < aWnd.length; ++i)
{
aWnd[i][WND] = oSys.Call("User32::CreateWindowEx" + _TCHAR,
aWnd[i][EXSTYLE], //dwExStyle
aWnd[i][CLASS], //lpClassName
0, //lpWindowName
aWnd[i][STYLE], //dwStyle
aWnd[i][X], //x
aWnd[i][Y], //y
aWnd[i][W], //nWidth
aWnd[i][H], //nHeight
hWnd, //hWndParent
i, //ID
hInstDLL, //hInstance
0); //lpParam
SetWindowFontAndText(aWnd[i][WND], hGuiFont, aWnd[i][TXT]);
}
GetSelection();
SetSelection();
CheckButtons();
CheckUndoRedo();
//Set window position
if ((nWndPosX == undefined) || (nWndPosY == undefined))
MoveWindow(hMainWnd, hWnd, "RT");
else
MoveWindow(hMainWnd, hWnd, [nWndPosX, nWndPosY]);
hFocus = aWnd[bUsePlug ? IDKEY2 : IDKEY1][WND];
}
else if ((uMsg == 6 /*WM_ACTIVATE*/) && (! wParam))
hFocus = oSys.Call("User32::GetFocus");
else if (uMsg == 7) //WM_SETFOCUS
oSys.Call("User32::SetFocus", hFocus);
else if (uMsg == 256) //WM_KEYDOWN
{
if (wParam == 27) //VK_ESCAPE
oSys.Call("User32::PostMessage" + _TCHAR, hWndDlg, 16 /*WM_CLOSE*/, 0, 0);
else if (wParam == 13) //VK_RETURN
{
if (! bIsReturn)
{
hFocus = oSys.Call("User32::GetFocus");
if ((hFocus != aWnd[IDSORT][WND]) && (hFocus != aWnd[IDUNDO][WND]) && (hFocus != aWnd[IDREDO][WND]))
oSys.Call("User32::PostMessage" + _TCHAR, hWnd, 273 /*WM_COMMAND*/, IDSORT, 0);
}
}
}
else if (uMsg == 257) //WM_KEYUP
bIsReturn = 0;
else if ((uMsg == 260) /*WM_SYSKEYDOWN*/ &&
(oSys.Call("User32::GetAsyncKeyState", 0xA0 /*VK_LSHIFT*/)))
{
if (wParam == 0x27) //VK_RIGHT
MoveWindow(hMainWnd, hWnd, "R");
else if (wParam == 0x25) //VK_LEFT
MoveWindow(hMainWnd, hWnd, "L");
else if (wParam == 0x28) //VK_DOWN
MoveWindow(hMainWnd, hWnd, "D");
else if (wParam == 0x26) //VK_UP
MoveWindow(hMainWnd, hWnd, "U");
else if (wParam == 0x23) //VK_END
MoveWindow(hMainWnd, hWnd, "E");
else if (wParam == 0x24) //VK_HOME
MoveWindow(hMainWnd, hWnd, "H");
else if (wParam == 0x22) //VK_NEXT
MoveWindow(hMainWnd, hWnd, "B");
else if (wParam == 0x21) //VK_PRIOR
MoveWindow(hMainWnd, hWnd, "T");
}
else if (uMsg == 273) //WM_COMMAND
{
nLowParam = LoWord(wParam);
if ((nLowParam == IDBEGCOL) || (nLowParam == IDENDCOL))
{
CheckEditValue(nLowParam);
if (bGetSel)
SetSelection();
}
else if (((nLowParam >= IDKEY1) && (nLowParam <= IDENTLINE)) || ((nLowParam >= IDDESC) && (nLowParam <= IDUSEPLUG)))
CheckButtons(nLowParam);
else if (nLowParam == IDSORT)
{
if (SortLines())
{
CheckUndoRedo(nLowParam);
GetSelection();
}
}
else if (nLowParam == IDUNDO)
{
bIsReturn = 1;
CheckUndoRedo(nLowParam);
GetSelection();
}
else if (nLowParam == IDREDO)
{
bIsReturn = 1;
CheckUndoRedo(nLowParam);
GetSelection();
}
}
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
oSys.Call("User32::PostQuitMessage", 0);
else
SetDefID(hWnd);
return 0;
}
function SetWindowFontAndText(hWnd, hFont, sText)
{
AkelPad.SendMessage(hWnd, 48 /*WM_SETFONT*/, hFont, true);
oSys.Call("User32::SetWindowText" + _TCHAR, hWnd, sText);
}
function MoveWindow(hWndParent, hWnd, vAction)
{
var aRectParent;
var aRect;
var nX;
var nY;
if (! hWndParent)
hWndParent=oSys.Call("User32::GetDesktopWindow");
aRectParent = GetWindowPos(hWndParent);
aRect = GetWindowPos(hWnd);
nX = aRect.left;
nY = aRect.top;
if (vAction == "R") //Move right
nX = aRect.left + ((aRect.left < aRectParent.right - 50) ? 20 : 0);
else if (vAction == "L") //Move left
nX = aRect.left - ((aRect.right > aRectParent.left + 50) ? 20 : 0);
else if (vAction == "D") //Move down
nY = aRect.top + ((aRect.top < aRectParent.bottom - 50) ? 20 : 0);
else if (vAction == "U") //Move up
nY = aRect.top - ((aRect.bottom > aRectParent.top + 50) ? 20 : 0);
else if (vAction == "E") //Move end (right)
nX = aRect.left + (aRectParent.right - aRect.right);
else if (vAction == "H") //Move home (left)
nX = aRect.left + (aRectParent.left - aRect.left);
else if (vAction == "B") //Move bottom
nY = aRect.top + (aRectParent.bottom - aRect.bottom);
else if (vAction == "T") //Move top
nY = aRect.top + (aRectParent.top - aRect.top);
else if (vAction == "C") //Center window
{
nX = aRectParent.left + ((aRectParent.right - aRectParent.left) / 2 - (aRect.right - aRect.left) / 2);
nY = aRectParent.top + ((aRectParent.bottom - aRectParent.top) / 2 - (aRect.bottom - aRect.top) / 2);
}
else if (vAction == "LT") //Move left top
{
nX = aRectParent.left;
nY = aRectParent.top;
}
else if (vAction == "RT") //Move right top
{
nX = aRect.left + (aRectParent.right - aRect.right);
nY = aRectParent.top;
}
else if (vAction == "LB") //Move left bottom
{
nX = aRectParent.left;
nY = aRect.top + (aRectParent.bottom - aRect.bottom);
}
else if (vAction == "RB") //Move right bottom
{
nX = aRect.left + (aRectParent.right - aRect.right);
nY = aRect.top + (aRectParent.bottom - aRect.bottom);
}
else
{
nX = vAction[0];
nY = vAction[1];
}
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 aRect = [];
oSys.Call("User32::GetWindowRect", hWnd, lpRect);
aRect.left = AkelPad.MemRead(_PtrAdd(lpRect, 0), DT_DWORD);
aRect.top = AkelPad.MemRead(_PtrAdd(lpRect, 4), DT_DWORD);
aRect.right = AkelPad.MemRead(_PtrAdd(lpRect, 8), DT_DWORD);
aRect.bottom = AkelPad.MemRead(_PtrAdd(lpRect, 12), DT_DWORD);
AkelPad.MemFree(lpRect);
return aRect;
}
function LoWord(nParam)
{
return (nParam & 0xFFFF);
}
function SetDefID(hWnd)
{
var nID = 1000;
var hFocus = oSys.Call("User32::GetFocus");
while ((nID < aWnd.length) && (hFocus != aWnd[nID][WND]))
++nID;
if ((nID != IDUNDO) && (nID != IDREDO))
nID = IDSORT;
oSys.Call("User32::DefDlgProc" + _TCHAR, hWnd, 1025 /*DM_SETDEFID*/, nID, 0);
}
function ReadWriteIni(bWrite)
{
var oFSO = new ActiveXObject("Scripting.FileSystemObject");
var sIniName = WScript.ScriptFullName.substring(0, WScript.ScriptFullName.lastIndexOf(".")) + ".ini";
var aRect;
var oFile;
var sIniTxt;
if (bWrite)
{
aRect = GetWindowPos(hWndDlg);
sIniTxt =
'nWndPosX=' + aRect.left + ';\r\n' +
'nWndPosY=' + aRect.top + ';\r\n' +
'bKey1=' + bKey1 + ';\r\n' +
'bDescLen=' + bDescLen + ';\r\n' +
'bKey2=' + bKey2 + ';\r\n' +
'bRTL=' + bRTL + ';\r\n' +
'bEntLine=' + bEntLine + ';\r\n' +
'bDesc=' + bDesc + ';\r\n' +
'bIgCase=' + bIgCase + ';\r\n' +
'nMethod=' + nMethod + ';\r\n' +
'nSortAnd=' + nSortAnd + ';\r\n' +
'nNoSort=' + nNoSort + ';\r\n' +
'bCopyToCB=' + bCopyToCB + ';\r\n' +
'bUsePlug=' + bUsePlug + ';'
oFile = oFSO.OpenTextFile(sIniName, 2, true, 0);
oFile.Write(sIniTxt);
oFile.Close();
}
else if (oFSO.FileExists(sIniName))
{
try
{
eval(AkelPad.ReadFile(sIniName));
}
catch (oError)
{}
}
}
function CheckButtons(nButton)
{
if ((nButton == IDKEY1) && ((! bKey1) || bKey2))
bKey1 = ! bKey1;
else if (nButton == IDDESCLEN)
bDescLen = ! bDescLen;
else if ((nButton == IDKEY2) && ((! bKey2) || bKey1))
bKey2 = ! bKey2;
else if (nButton == IDRTL)
bRTL = ! bRTL;
else if (nButton == IDENTLINE)
bEntLine = ! bEntLine;
else if (nButton == IDDESC)
bDesc = ! bDesc;
else if (nButton == IDIGCASE)
bIgCase = ! bIgCase;
else if ((nButton == IDSTRING) || (nButton == IDLOCALE) || (nButton == IDNUM))
nMethod = nButton - IDSTRING + 1;
else if ((nButton == IDREMODUKEY) || (nButton == IDEXTRDUKEY) || (nButton == IDEXTRUNKEY))
{
if (nSortAnd == nButton - IDREMODUKEY + 1)
nSortAnd = 0;
else
nSortAnd = nButton - IDREMODUKEY + 1;
}
else if ((nButton == IDREVERSE) || (nButton == IDREMODULIN) || (nButton == IDEXTRDULIN) || (nButton == IDEXTRUNLIN))
{
if (nNoSort == nButton - IDREVERSE + 1)
nNoSort = 0;
else
nNoSort = nButton - IDREVERSE + 1;
}
else if (nButton == IDCOPYTOCB)
bCopyToCB = ! bCopyToCB;
else if (nButton == IDUSEPLUG)
bUsePlug = ! bUsePlug;
if ((bUsePlug) && ((nNoSort > 1) || (nMethod == 2)))
nMethod = 1;
AkelPad.SendMessage(aWnd[IDKEY1][WND], BM_SETCHECK, bKey1, 0);
AkelPad.SendMessage(aWnd[IDDESCLEN][WND], BM_SETCHECK, bDescLen, 0);
AkelPad.SendMessage(aWnd[IDKEY2][WND], BM_SETCHECK, bKey2, 0);
AkelPad.SendMessage(aWnd[IDRTL][WND], BM_SETCHECK, bRTL, 0);
AkelPad.SendMessage(aWnd[IDENTLINE][WND], BM_SETCHECK, bEntLine, 0);
AkelPad.SendMessage(aWnd[IDDESC][WND], BM_SETCHECK, bDesc, 0);
AkelPad.SendMessage(aWnd[IDIGCASE][WND], BM_SETCHECK, bIgCase, 0);
AkelPad.SendMessage(aWnd[IDSTRING][WND], BM_SETCHECK, (nMethod == 1), 0);
AkelPad.SendMessage(aWnd[IDLOCALE][WND], BM_SETCHECK, (nMethod == 2), 0);
AkelPad.SendMessage(aWnd[IDNUM][WND], BM_SETCHECK, (nMethod == 3), 0);
AkelPad.SendMessage(aWnd[IDREMODUKEY][WND], BM_SETCHECK, (nSortAnd == 1), 0);
AkelPad.SendMessage(aWnd[IDEXTRDUKEY][WND], BM_SETCHECK, (nSortAnd == 2), 0);
AkelPad.SendMessage(aWnd[IDEXTRUNKEY][WND], BM_SETCHECK, (nSortAnd == 3), 0);
AkelPad.SendMessage(aWnd[IDREVERSE][WND], BM_SETCHECK, (nNoSort == 1), 0);
AkelPad.SendMessage(aWnd[IDREMODULIN][WND], BM_SETCHECK, (nNoSort == 2), 0);
AkelPad.SendMessage(aWnd[IDEXTRDULIN][WND], BM_SETCHECK, (nNoSort == 3), 0);
AkelPad.SendMessage(aWnd[IDEXTRUNLIN][WND], BM_SETCHECK, (nNoSort == 4), 0);
AkelPad.SendMessage(aWnd[IDCOPYTOCB][WND], BM_SETCHECK, bCopyToCB, 0);
AkelPad.SendMessage(aWnd[IDUSEPLUG][WND], BM_SETCHECK, bUsePlug, 0);
oSys.Call("User32::EnableWindow", aWnd[IDKEY1][WND], (nNoSort != 1) && (! bUsePlug));
oSys.Call("User32::EnableWindow", aWnd[IDDESCLEN][WND], (nNoSort == 0) && bKey1 && (! bUsePlug));
oSys.Call("User32::EnableWindow", aWnd[IDKEY2][WND], (nNoSort != 1));
oSys.Call("User32::EnableWindow", aWnd[IDRTL][WND], (nNoSort != 1) && bKey2 && (! bUsePlug));
oSys.Call("User32::EnableWindow", aWnd[IDENTLINE][WND], (nNoSort != 1) && bKey2);
oSys.Call("User32::EnableWindow", aWnd[IDFROM2][WND], (nNoSort != 1) && bKey2 && (! bEntLine));
oSys.Call("User32::EnableWindow", aWnd[IDTO2][WND], (nNoSort != 1) && bKey2 && (! bEntLine));
oSys.Call("User32::EnableWindow", aWnd[IDCOLUMNS][WND], (nNoSort != 1) && bKey2 && (! bEntLine));
oSys.Call("User32::EnableWindow", aWnd[IDBEGCOL][WND], (nNoSort != 1) && bKey2 && (! bEntLine));
oSys.Call("User32::EnableWindow", aWnd[IDENDCOL][WND], (nNoSort != 1) && bKey2 && (! bEntLine));
oSys.Call("User32::EnableWindow", aWnd[IDDESC][WND], (nNoSort == 0) && bKey2);
oSys.Call("User32::EnableWindow", aWnd[IDIGCASE][WND], (nNoSort != 1) && bKey2 && ((nMethod != 3) || bUsePlug));
oSys.Call("User32::EnableWindow", aWnd[IDSTRING][WND], (nNoSort != 1) && bKey2);
oSys.Call("User32::EnableWindow", aWnd[IDLOCALE][WND], (nNoSort != 1) && bKey2 && (! bUsePlug));
oSys.Call("User32::EnableWindow", aWnd[IDNUM][WND], (nNoSort != 1) && bKey2 && (! (bUsePlug && (nNoSort > 1))));
oSys.Call("User32::EnableWindow", aWnd[IDREMODUKEY][WND], (nNoSort == 0) && (! bUsePlug));
oSys.Call("User32::EnableWindow", aWnd[IDEXTRDUKEY][WND], (nNoSort == 0) && (! bUsePlug));
oSys.Call("User32::EnableWindow", aWnd[IDEXTRUNKEY][WND], (nNoSort == 0) && (! bUsePlug));
oSys.Call("User32::EnableWindow", aWnd[IDCOPYTOCB][WND], (! bUsePlug));
}
function CheckUndoRedo(nButton)
{
var nBegSel = AkelPad.GetSelStart();
var sTxtUndo = aWnd[IDUNDO][TXT];
var sTxtRedo = aWnd[IDREDO][TXT];
if (nButton == IDSORT)
{
if (nUndoLimit < AkelPad.SendMessage(hEditWnd, 3084 /*AEM_GETUNDOLIMIT*/, 0, 0))
++nUndoLimit;
nRedoLimit = 0;
}
else if ((nButton == IDUNDO) && (nUndoLimit))
{
--nUndoLimit;
++nRedoLimit;
AkelPad.SendMessage(hEditWnd, 3077 /*AEM_UNDO*/, 0, 0);
}
else if ((nButton == IDREDO) && (nRedoLimit))
{
++nUndoLimit;
--nRedoLimit;
AkelPad.SendMessage(hEditWnd, 3078 /*AEM_REDO*/, 0, 0);
AkelPad.SetSel(nBegSel, AkelPad.GetSelEnd());
}
if (nUndoLimit)
sTxtUndo += " (" + nUndoLimit + ")";
if (nRedoLimit)
sTxtRedo += " (" + nRedoLimit + ")";
if (((oSys.Call("User32::GetFocus") == aWnd[IDUNDO][WND]) && (nUndoLimit == 0)) ||
((oSys.Call("User32::GetFocus") == aWnd[IDREDO][WND]) && (nRedoLimit == 0)))
oSys.Call("User32::SetFocus", aWnd[IDKEY1][WND]);
SetWindowFontAndText(aWnd[IDUNDO][WND], hGuiFont, sTxtUndo);
SetWindowFontAndText(aWnd[IDREDO][WND], hGuiFont, sTxtRedo);
oSys.Call("User32::EnableWindow", aWnd[IDUNDO][WND], nUndoLimit);
oSys.Call("User32::EnableWindow", aWnd[IDREDO][WND], nRedoLimit);
}
function CheckEditValue(nID)
{
var sEditValue;
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[nID][WND], lpBuffer, 256);
sEditValue = AkelPad.MemRead(lpBuffer, _TSTR);
if (sEditValue == 0)
{
SetWindowFontAndText(aWnd[nID][WND], hGuiFont, "1");
AkelPad.SendMessage(aWnd[nID][WND], 177 /*EM_SETSEL*/, 0, -1);
}
else if (sEditValue > nLastCol)
{
SetWindowFontAndText(aWnd[nID][WND], hGuiFont, String(nLastCol));
AkelPad.SendMessage(aWnd[nID][WND], 177 /*EM_SETSEL*/, 0, -1);
}
}
function GetSelection()
{
var lpBegSel = AkelPad.MemAlloc(_X64 ? 24 : 12 /*sizeof(AECHARINDEX)*/);
var lpEndSel = AkelPad.MemAlloc(_X64 ? 24 : 12 /*sizeof(AECHARINDEX)*/);
var nLine1, nLine2, nCol1, nCol2;
AkelPad.SendMessage(hEditWnd, 3123 /*AEM_EXGETSEL*/, lpBegSel, lpEndSel);
nLine1 = AkelPad.MemRead(lpBegSel, DT_DWORD) + 1;
nLine2 = AkelPad.MemRead(lpEndSel, DT_DWORD) + 1;
if ((nLine1 == nLine2) && (! bGetSel))
{
nLine1 = 1;
nLine2 = AkelPad.SendMessage(hEditWnd, 3129 /*AEM_GETLINENUMBER*/, 0 /*AEGL_LINECOUNT*/, 0);
}
nLastCol = LineMaxLength(nLine1, nLine2) + 1;
SetWindowFontAndText(aWnd[IDBEGLINE][WND], hGuiFont, String(nLine1));
SetWindowFontAndText(aWnd[IDENDLINE][WND], hGuiFont, String(nLine2));
if (! bGetSel)
{
if (AkelPad.MemRead(_PtrAdd(lpBegSel, _X64 ? 16 : 8), DT_DWORD) < AkelPad.MemRead(_PtrAdd(lpEndSel, _X64 ? 16 : 8), DT_DWORD))
{
nCol1 = AkelPad.MemRead(_PtrAdd(lpBegSel, _X64 ? 16 : 8), DT_DWORD) + 1;
nCol2 = AkelPad.MemRead(_PtrAdd(lpEndSel, _X64 ? 16 : 8), DT_DWORD) + 1;
}
else
{
nCol1 = AkelPad.MemRead(_PtrAdd(lpEndSel, _X64 ? 16 : 8), DT_DWORD) + 1;
nCol2 = AkelPad.MemRead(_PtrAdd(lpBegSel, _X64 ? 16 : 8), DT_DWORD) + 1;
}
if (nCol1 > nLastCol)
nCol1 = nLastCol;
if (nCol2 > nLastCol)
nCol2 = nLastCol;
SetWindowFontAndText(aWnd[IDBEGCOL][WND], hGuiFont, String(nCol1));
SetWindowFontAndText(aWnd[IDENDCOL][WND], hGuiFont, String(nCol2));
//removed (2018-02-01)
//bEntLine = ! AkelPad.SendMessage(hEditWnd, 3127 /*AEM_GETCOLUMNSEL*/, 0, 0);
}
AkelPad.MemFree(lpBegSel);
AkelPad.MemFree(lpEndSel);
bGetSel = 1;
}
function LineMaxLength(nLine1, nLine2)
{
var nMaxLenL = 0;
var nBegLine;
var nLenLine;
var i;
for (i = nLine1 - 1; i < nLine2; ++i)
{
nBegLine = AkelPad.SendMessage(hEditWnd, 187 /*EM_LINEINDEX*/, i, 0);
nLenLine = AkelPad.SendMessage(hEditWnd, 193 /*EM_LINELENGTH*/, nBegLine, 0);
if (nLenLine > nMaxLenL)
nMaxLenL = nLenLine;
}
return nMaxLenL;
}
function SetSelection()
{
var hFocus = oSys.Call("User32::GetFocus");
var lpSelect = AkelPad.MemAlloc(_X64 ? 56 : 32 /*sizeof(AESELECTION)*/);
var lpBegSel = lpSelect;
var lpEndSel = _PtrAdd(lpSelect, _X64 ? 24 : 12);
var lpSelFlag = _PtrAdd(lpSelect, _X64 ? 48 : 24);
var nColSel = 1;
var nLine1, nLine2, nCol1, nCol2;
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[IDBEGLINE][WND], lpBuffer, 256);
nLine1 = Number(AkelPad.MemRead(lpBuffer, _TSTR)) - 1;
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[IDENDLINE][WND], lpBuffer, 256);
nLine2 = Number(AkelPad.MemRead(lpBuffer, _TSTR)) - 1;
if ((hFocus == aWnd[IDBEGCOL][WND]) || (hFocus == aWnd[IDENDCOL][WND]))
{
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[IDBEGCOL][WND], lpBuffer, 256);
nCol1 = Number(AkelPad.MemRead(lpBuffer, _TSTR)) - 1;
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[IDENDCOL][WND], lpBuffer, 256);
nCol2 = Number(AkelPad.MemRead(lpBuffer, _TSTR)) - 1;
}
else
{
nCol1 = 0;
nCol2 = AkelPad.SendMessage(hEditWnd, 193 /*EM_LINELENGTH*/, AkelPad.SendMessage(hEditWnd, 187 /*EM_LINEINDEX*/, nLine2, 0), 0);
nColSel = 0;
}
AkelPad.MemCopy(lpBegSel, nLine1, DT_DWORD);
AkelPad.MemCopy(_PtrAdd(lpBegSel, _X64 ? 16 : 8), nCol1, DT_DWORD);
AkelPad.MemCopy(lpEndSel, nLine2, DT_DWORD);
AkelPad.MemCopy(_PtrAdd(lpEndSel, _X64 ? 16 : 8), nCol2, DT_DWORD);
AkelPad.MemCopy(lpSelFlag, nColSel, DT_DWORD);
AkelPad.SendMessage(hEditWnd, 3132 /*AEM_INDEXUPDATE*/, 0, lpBegSel);
AkelPad.SendMessage(hEditWnd, 3132 /*AEM_INDEXUPDATE*/, 0, lpEndSel);
AkelPad.SendMessage(hEditWnd, 3126 /*AEM_SETSEL*/, 0, lpSelect);
AkelPad.MemFree(lpSelect);
}
function SortLines()
{
var aTxt = [];
var sText = "";
var nLine1;
var nLine2;
var nCol1;
var nCol2;
var i;
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[IDBEGLINE][WND], lpBuffer, 256);
nLine1 = Number(AkelPad.MemRead(lpBuffer, _TSTR)) - 1;
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[IDENDLINE][WND], lpBuffer, 256);
nLine2 = Number(AkelPad.MemRead(lpBuffer, _TSTR)) - 1;
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[IDBEGCOL][WND], lpBuffer, 256);
nCol1 = Number(AkelPad.MemRead(lpBuffer, _TSTR)) - 1;
oSys.Call("User32::GetWindowText" + _TCHAR, aWnd[IDENDCOL][WND], lpBuffer, 256);
nCol2 = Number(AkelPad.MemRead(lpBuffer, _TSTR)) - 1;
if (nLine1 == nLine2)
{
AkelPad.MessageBox(hWndDlg, sTxtNoRangeL, sTxtCaption, 48 /*MB_ICONEXCLAMATION*/);
return 0;
}
if ((nCol1 == nCol2) && bKey2 && (! bEntLine) && (nNoSort != 1))
{
AkelPad.MessageBox(hWndDlg, sTxtNoKey2, sTxtCaption, 48 /*MB_ICONEXCLAMATION*/);
oSys.Call("User32::SetFocus", aWnd[IDENDCOL][WND]);
AkelPad.SendMessage(aWnd[IDENDCOL][WND], 177 /*EM_SETSEL*/, 0, -1);
return 0;
}
hFocus = oSys.Call("User32::GetFocus");
if (bUsePlug)
{
if (! bEntLine)
{
oSys.Call("User32::SetFocus", aWnd[IDENDCOL][WND]);
SetSelection();
}
SortByPlugin();
oSys.Call("User32::SetFocus", hFocus);
return 1;
}
else
{
oSys.Call("User32::SetFocus", aWnd[IDSORT][WND]);
SetSelection();
if (nNoSort == 1)
{
aTxt = AkelPad.GetSelText(1 /*\r*/).split("\r");
sText = aTxt.reverse().join("\r");
}
else
{
aTxt[0] = AkelPad.GetSelText(1 /*\r*/).split("\r");
if (bKey2)
{
if (bEntLine)
aTxt[1] = AkelPad.GetSelText(1 /*\r*/).split("\r");
else
aTxt[1] = GetTextRangeColumn([nLine1, nCol1], [nLine2, nCol2]);
if (bRTL)
{
for (i = 0; i < aTxt[1].length; ++i)
aTxt[1][i] = aTxt[1][i].split("").reverse().join("");
}
}
aTxt = ArrayTransp(aTxt);
ArraySort(aTxt);
for (i = 0; i < aTxt.length; ++i)
sText += aTxt[i][0] + "\r";
sText = sText.slice(0, -1);
}
if (bCopyToCB)
{
AkelPad.SetClipboardText(sText);
oSys.Call("User32::SetFocus", hFocus);
return 0;
}
else
{
AkelPad.ReplaceSel(sText, -1);
oSys.Call("User32::SetFocus", hFocus);
return 1;
}
}
}
function GetTextRangeColumn(aBeg, aEnd, bReturnText, nNewLine, bFillSpaces)
{
var nBegLine1;
var nBegLine2;
var nLenLine2;
var nLine1;
var nLine2;
var nCol1;
var nCol2;
var aLines;
var nWidth;
var i;
if (aBeg[0] < aEnd[0])
{
nLine1 = aBeg[0];
nLine2 = aEnd[0];
}
else
{
nLine1 = aEnd[0];
nLine2 = aBeg[0];
}
if (aBeg[1] < aEnd[1])
{
nCol1 = aBeg[1];
nCol2 = aEnd[1];
}
else
{
nCol1 = aEnd[1];
nCol2 = aBeg[1];
}
nBegLine1 = AkelPad.SendMessage(hEditWnd, 187 /*EM_LINEINDEX*/, nLine1, 0);
nBegLine2 = AkelPad.SendMessage(hEditWnd, 187 /*EM_LINEINDEX*/, nLine2, 0);
nLenLine2 = AkelPad.SendMessage(hEditWnd, 193 /*EM_LINELENGTH*/, nBegLine2, 0);
aLines = AkelPad.GetTextRange(nBegLine1, nBegLine2 + nLenLine2, 1 /*"\r"*/).split("\r");
nWidth = nCol2 - nCol1;
for (i = 0; i < aLines.length; ++i)
{
aLines[i] = aLines[i].substring(nCol1, nCol2);
if (bFillSpaces)
while (aLines[i].length < nWidth)
aLines[i] += " ";
}
if (bReturnText)
{
if ((! nNewLine) || (nNewLine == 1))
pNewLine = "\r";
else if (nNewLine == 2)
pNewLine = "\n";
else
pNewLine = "\r\n";
return aLines.join(pNewLine);
}
else
return aLines;
}
function ArrayTransp(aA)
{
var nLen1 = aA.length;
var nLen2 = aA[0].length;
var aB = new Array(nLen2);
var i, n;
for (n = 0; n < nLen2; ++n)
{
aB[n] = [];
for (i = 0; i < nLen1; ++i)
aB[n].push(aA[i][n]);
}
return aB;
}
function ArraySort(aTxt)
{
if (nNoSort == 0)
{
aTxt.sort(CompareValue);
RemoveFromArray(aTxt);
}
else
NoSort(aTxt);
}
function CompareValue(aA, aB)
{
var nResult = 0;
if (bKey1)
{
if (aA[0].length > aB[0].length)
nResult = bDescLen ? -1 : 1;
else if (aA[0].length < aB[0].length)
nResult = bDescLen ? 1 : -1;
}
if (bKey2 && (nResult == 0))
{
if (nMethod == 1)
{
if (bIgCase)
{
aA[1] = aA[1].toUpperCase();
aB[1] = aB[1].toUpperCase();
}
if (aA[1] > aB[1])
nResult = bDesc ? -1 : 1;
else if (aA[1] < aB[1])
nResult = bDesc ? 1 : -1;
}
else if (nMethod == 2)
{
nResult = oSys.Call("Kernel32::lstrcmp" + (bIgCase ? "i" : "") + _TCHAR, aA[1], aB[1]);
if (bDesc)
nResult = -nResult;
}
else
{
var oRegExp = /(-?\d+\.?\d*)|(-?\.\d+)/;
aA[1] = oRegExp.exec(aA[1]);
aB[1] = oRegExp.exec(aB[1]);
aA[1] = aA[1] ? parseFloat(aA[1][0]) : 0;
aB[1] = aB[1] ? parseFloat(aB[1][0]) : 0;
nResult = bDesc ? (aB[1] - aA[1]) : (aA[1] - aB[1]);
}
}
return nResult;
}
function RemoveFromArray(aTxt)
{
var i;
if (nSortAnd == 1)
{
for (i = aTxt.length - 1; i > 0; --i)
{
if (CompareValue(aTxt[i], aTxt[i - 1]) == 0)
aTxt.splice(i, 1);
}
}
else if (nSortAnd == 2)
{
for (i = aTxt.length - 2; i > 0; --i)
{
if ((CompareValue(aTxt[i], aTxt[i + 1]) != 0) && (CompareValue(aTxt[i], aTxt[i - 1]) != 0))
aTxt.splice(i, 1);
}
if ((aTxt.length > 1) && (CompareValue(aTxt[aTxt.length - 1], aTxt[aTxt.length - 2]) != 0))
aTxt.splice(aTxt.length - 1, 1);
if ((aTxt.length > 1) && (CompareValue(aTxt[0], aTxt[1]) != 0))
aTxt.splice(0, 1);
if (aTxt.length == 1)
aTxt.splice(0, 1);
}
else if (nSortAnd == 3)
{
i = aTxt.length - 1;
while (i > 0)
{
if (CompareValue(aTxt[i], aTxt[i - 1]) == 0)
{
aTxt.splice(i - 1, 2);
i -= 2;
}
else
--i;
}
}
}
function NoSort(aTxt)
{
var i, n, bIsDup;
if (nNoSort == 2)
{
for (n = 0; n < aTxt.length; ++n)
{
i = n + 1;
while (i < aTxt.length)
{
if (CompareValue(aTxt[i], aTxt[n]) == 0)
aTxt.splice(i, 1);
else
++i;
}
}
}
else if (nNoSort == 3)
{
n = 0;
while (n < aTxt.length)
{
bIsDup = false;
for (i = 0; i < aTxt.length; ++i)
{
if ((CompareValue(aTxt[i], aTxt[n]) == 0) && (i != n))
{
bIsDup = true;
break;
}
}
if (bIsDup)
++n;
else
aTxt.splice(n, 1);
}
}
else if (nNoSort == 4)
{
n = 0;
while (n < aTxt.length)
{
bIsDup = false;
i = n + 1;
while (i < aTxt.length)
{
if (CompareValue(aTxt[i], aTxt[n]) == 0)
{
bIsDup = true;
aTxt.splice(i, 1);
}
else
++i;
}
if (bIsDup)
aTxt.splice(n, 1);
else
++n;
}
}
}
function SortByPlugin()
{
var sAscDesc = bDesc ? "Desc" : "Asc";
if (nNoSort == 1)
AkelPad.Call("Format::LineReverse");
else if (nNoSort == 2)
AkelPad.Call("Format::LineRemoveDuplicates", ! bIgCase);
else if (nNoSort == 3)
AkelPad.Call("Format::LineGetDuplicates", ! bIgCase);
else if (nNoSort == 4)
AkelPad.Call("Format::LineGetUnique", ! bIgCase);
else if (nMethod == 1)
AkelPad.Call("Format::LineSortStr" + sAscDesc, ! bIgCase);
else if (nMethod == 3)
AkelPad.Call("Format::LineSortInt" + sAscDesc, ! bIgCase);
}