Scripts discussion (3)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 202
Joined: Sat Mar 28, 2015 2:36 pm
Location: Russia

Post by Kley »

KDJ
Запустить диалог "Поиск",
Переместить окно диалога,
Нажать кнопку\меню для запуска диалога еще раз, еще, еще...
Окно перемещается с места на место.

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

KDJ wrote: Added:
- context menu to Templates/Batches header list (click or right click),
- possibility to choose columns in Templates/Batches list.
Changed: now by default, the list of templates is not sorted. To change it, click on the list header.

Code: Select all

/**************************************************
FindReplaceEx.js - ver. 2015-05-11
Interface language
Language:      Russian (1049)
Translated by: F. Phoenix, Andrey_A_A, VladSh, YuS
**************************************************/
sTxtMore          = 'Ещё';
sTxtCount         = 'Подсчитать';
sTxtFindAll       = 'Найти все';
sTxtBookmarkAll   = 'Закладки на все';
sTxtUnmarkAll     = 'Убрать закладки';
sTxtTemplates     = 'Шаблоны';
sTxtBatches       = 'Пакеты';
sTxtWait          = 'Подождите...';
sTxtTotalFound    = 'Всего вхождений: ';
sTxtReplAllCD     = '"Заменить всё" закрывает диалог';
sTxtReplAllWM     = '"Заменить всё" без сообщения';
sTxtCheckInSel    = 'Отметить "В выделении" если есть выделение';
sTxtCycleSearch   = 'Поиск по кругу';
sTxtPrompt        = 'Запрос';
sTxtWhatFind      = 'Что найти';
sTxtReplaceWith   = 'Чем заменить';
sTxtMatchCase     = 'Учитывать регистр';
sTxtWholeWord     = 'Слово целиком';
sTxtRegExp        = 'Регулярные выражения';
sTxtEscSeq        = 'Esc-последовательности';
sTxtNew           = 'Создать';
sTxtAdd           = 'Добавить';
sTxtRename        = 'Изменить';
sTxtRemove        = 'Удалить';
sTxtToBatch       = 'В пакет';
sTxtOK            = 'OK';
sTxtCheckRE       = 'Проверить RegExp';
sTxtMoveUp        = 'Вверх';
sTxtMoveDown      = 'Вниз';
sTxtBatchReplace  = 'Заменить всё (пакетом)';
sTxtTemplateName  = 'Имя шаблона';
sTxtConditions    = 'Условия';                                    //new
sTxtAllColumns    = 'Все колонки';                                   //new
sTxtNameOnly      = 'Только имя';                                     //new
sTxtSortByName    = 'Сортировка по имени';                                  //new
sTxtNameInvalid   = 'Неверное имя.';
sTxtNameExists    = 'Такое наименование шаблона уже используется.';
sTxtWantRemove    = 'Вы действительно хотите удалить этот шаблон?';
sTxtBatchNumber   = 'Пакет №';
sTxtWantBatchRepl = 'Заменить всё этим пакетом?';
sTxtNoFindText    = 'Нет текста в поле "Что найти".';
sTxtRegExpOK      = 'Регулярное выражение правильное.';
sTxtRegExpError   = 'Ошибка в регулярном выражении.';
//context menu
sMnuUndo        = '&Отменить';
sMnuRedo        = '&Повторить';
sMnuCut         = 'Вырезать';
sMnuCopy        = '&Копировать';
sMnuPaste       = '&Вставить';
sMnuDelete      = '&Удалить';
sMnuSelectAll   = 'Выделить всё';
//RegExp help
sHlpAnyChar        = 'любой символ (точка)';
sHlpSpecChars      = '()[]{}^$.?+*|\\ специальные символы';
sHlpFF             = 'перевод страницы \\x0C';
sHlpAnyNL          = 'перевод строки';
sHlpTab            = 'табуляция \\x09';
sHlpVTab           = 'вертикальная табуляция \\x0B';
sHlpDigit          = 'цифра [0-9]';
sHlpNonDigit       = 'не цифра [^0-9]';
sHlpWhiteSp        = 'пробельный символ [ \\f\\n\\t\\v]';
sHlpNonWhiteSp     = 'непробельный символ';
sHlpWordChar       = 'словесный символ  (non-delimiter)';
sHlpNonWordChar    = 'несловесный символ (delimiter)';
sHlpCharHex        = 'символ - код в диапазоне 0-10FFFF';
sHlpCharHex2       = 'символ - 2-значный код';
sHlpCharHex4       = 'символ - 4-значный код';
sHlpAlternative    = 'одна из альтернатив: ab либо xy';
sHlpCharSet        = 'набор символов, нужен любой из них';
sHlpNegCharSet     = 'исключающий набор символов';
sHlpRange          = 'диапазон символов от a до z';
sHlpNegRange       = 'исключающий диапазон';
sHlpBeginLine      = 'начало строки';
sHlpEndLine        = 'конец строки';
sHlpBeginText      = 'начало документа';
sHlpEndText        = 'конец документа';
sHlpBeginRange     = 'начало диапазона поиска';
sHlpEndRange       = 'конец диапазона поиска';
sHlpWordBoun       = 'граница слова';
sHlpNonWordBoun    = 'не граница слова';
sHlpExcludePrev    = 'исключить предыдущее из результата';
sHlpZeroOrOne      = '0 или 1 раз';
sHlpZeroOrMore     = '0 или более раз';
sHlpOneOrMore      = '1 или более раз';
sHlpExactly        = 'ровно 3 раза';
sHlpAtLeast        = 'не менее 3 раз';
sHlpFromTo         = 'от 3 до 7 раз';
sHlpBackslash      = 'обратный слеш';
sHlpNL             = 'перевод строки';
sHlpEntireStr      = 'вся захваченная строка';
sHlpSubmatch9      = '9я подстрока (диапазон 1-9)';
sHlpSubmatch99     = '99я подстрока (диапазон 01-99)';
sHlpGreedy         = '- выше жадные квантификаторы ';
sHlpLazy           = 'добавить для ленивого квантификатора';
sHlpPossesive      = 'добавить для сверхжадного квантификатора';
sHlpCapture1       = 'запоминающая скобка';
sHlpCapture2       = 'соответствует негативному ab, захвату';
sHlpNotCapture     = 'незапоминающая скобка';
sHlpAtomicGrouping = 'атомарная группа (незапоминающая)';
sHlpPreceded       = 'строка следует за ab';
sHlpNotPreceded    = 'строка не следует за ab';
sHlpFollowed       = 'строка предшествует ab';
sHlpNotFollowed    = 'строка не предшествует ab';
sHlpcondition      = 'если (1) то x, иначе y';
sHlpBackrefer9     = 'обратная ссылка, диапазон 1-9';
sHlpBackrefer99    = 'обратная ссылка, диапазон 01-99';
sHlpIgnoreCase     = 'не учитывать регистр символов';
sHlpMultiline      = 'многострочный поиск (по умолчанию)';
sHlpDotDefault     = 'точке соответствует любой символ (по умолчанию)';
sHlpInvertGreed    = 'инвертировать жадность квантификаторов';
sHlpMatchCase      = 'учитывать регистр символов';
sHlpMultilineOff   = 'выключить многострочный поиск';
sHlpDotDefaultOff  = 'точке соответствует любой символ, кроме \\n';
sHlpInvertGreedOff = 'отменить инвертирование жадности';

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Kley wrote:...
Окно перемещается с места на место.
FindReplaceEx.js
Fixed: minor bugs.
Updated: Russian translation by YuS.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Kley
В диалоге HexSelAs.js напрашивается деактивация группы "Два байта", когда отмечена галочка "Один байт (авто)".

Code: Select all

  oSys.Call("user32::EnableWindow", hWndUtf16LE, nAnsi == 8);
  oSys.Call("user32::EnableWindow", hWndUtf16BE, nAnsi == 8);
  AkelPad.SendMessage(hWndChkAnsi,   241 /*BM_SETCHECK*/, (nAnsi   ==  4), 0);

Offline
Posts: 202
Joined: Sat Mar 28, 2015 2:36 pm
Location: Russia

Post by Kley »

Instructor, Спасибо.

"HexSelAs.js"
Небольшая доработка интерфейса.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Instructor wrote:Suggestion:
- If "Replace all" without message not set, "Batch replace all" show replace message once (with using AkelPad.TextReplace).
It seems to me that this is a topic for a separate script - batch replace without standard "Replace" dialog.
---
Request.
Now AkelPad.TextReplace() with argument bAll=true returns -1.
Can you change this method, so that it will return count of changes.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

KDJ wrote:It seems to me that this is a topic for a separate script - batch replace without standard "Replace" dialog.
At first thought the same (add the argument to run without Replace dialog), but this is require to pass the direction somehow.
KDJ wrote:Request.
Scripts plugin v16.7

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Instructor
Thank you very much.
Can you still take into account this:
Scripts-Eng.txt wrote:If there is syntax error in regular expression (with FRF_REGEXP flag), the return value is (–100 - PatternOffset).

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Набросок:

Code: Select all

var sAkelUpdaterOutputDir = AkelPad.GetAkelDir(1 /*ADTYPE_AKELFILES*/);
var sAkelUpdaterZip = getTempPathToAkelUpdaterZip();

if (!downloadFile("http://akelpad.sourceforge.net/files/tools/AkelUpdater.zip", sAkelUpdaterZip))
{
  WScript.Echo("ERROR: Could not download AkelUpdater.zip");
  WScript.Quit();
}
if (!unpackZip(sAkelUpdaterZip, sAkelUpdaterOutputDir))
{
  deleteFile(sAkelUpdaterZip);
  WScript.Echo("ERROR: Could not unpack AkelUpdater.zip");
  WScript.Quit();
}
deleteFile(sAkelUpdaterZip);
WScript.Echo("Updated successfully!");

function getTempPathToAkelUpdaterZip()
{
  var sTempDir = ".\\";
  var pBuf;
  if (pBuf = AkelPad.MemAlloc(256 * _TSIZE))
  {
    var oSys = AkelPad.SystemFunction();
    oSys.Call("kernel32::GetTempPath" + _TCHAR, 256 - 1, pBuf);
    sTempDir = AkelPad.MemRead(pBuf, _TSTR);
    AkelPad.MemFree(pBuf);
  }
  return sTempDir + "AkelUpdater.zip";
}

function downloadFile(sSourceUrl, sDestFile)
{
  var savedOK = false;
  var oXMLHTTP = new ActiveXObject("MSXML2.XMLHTTP");
  oXMLHTTP.onreadystatechange = function() {
    if (oXMLHTTP.readyState === 4) 
    {
      if (oXMLHTTP.status == 200)
      {
        var oADOStream = new ActiveXObject("ADODB.Stream");
        oADOStream.open();
        oADOStream.type = 1; // Binary
        oADOStream.write(oXMLHTTP.ResponseBody);
        oADOStream.position = 0;
        oADOStream.saveToFile(sDestFile, 2);
        oADOStream.close(); 
        savedOK = true;
      }
    }
  };

  oXMLHTTP.open("GET", sSourceUrl, false);
  oXMLHTTP.send();
  return savedOK;
}

function deleteFile(sFileName)
{
  var oFSO = new ActiveXObject("Scripting.FileSystemObject");
  oFSO.DeleteFile(sFileName, true);
}

function unpackZip(sZipFileName, sOutputDir)
{
  var oFSO = new ActiveXObject("Scripting.FileSystemObject");
  if (!oFSO.FolderExists(sOutputDir))
    oFSO.CreateFolder(sOutputDir);

  var oShell = new ActiveXObject("Shell.Application");
  var filesInZip = oShell.NameSpace(sZipFileName).Items();
  if (filesInZip.Count == 0)
    return false; // no items, maybe it's not an archive

  oShell.NameSpace(sOutputDir).CopyHere(filesInZip, 4 /*No progress dialog*/ + 16 /*Yes to All*/);
  WScript.Sleep(500);
  return true;
}

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

FindReplaceEx.js
Added possibility to set AkelPad font in edit controls (Templates/Batches dialog) - available in context menu or by pressing Ctrl+F.

YuS
Offline
Posts: 512
Joined: Sun Sep 15, 2013 8:25 am
Location: 013 в Тентуре, семь по Спирали, налево от Большой Медведицы

Post by YuS »

KDJ wrote: Added possibility to set AkelPad font in edit controls (Templates/Batches dialog) - available in context menu or by pressing Ctrl+F.

Code: Select all

/**************************************************
FindReplaceEx.js - ver. 2015-05-15
Interface language
Language:      Russian (1049)
Translated by: F. Phoenix, Andrey_A_A, VladSh, YuS
**************************************************/
...
sMnuAPFont    = 'Шрифт (Вид->Шрифт)';                                      //new
...

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

KDJ wrote:Can you still take into account this
Done.

Here is also test version of AkelPad with implemented FRF_ALLFILES.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Instructor
Thanks, everything works fine.
---
FindReplaceEx.js
Updated Russian translation by YuS.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

FindReplaceEx.js
Added:
- possibility of naming the batches (via context menu or F2),
- context menu for batch tabs.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Instructor
I'm trying "Batch replace" without "Replace" dialog and I encountered a small problem.

Text for test: aaaa
Caret at 3 position (offset 1 based).

Replace:
AkelPad.TextReplace(0, "a", "bc", 0x00100000 /*FRF_UP*/, 1);
or
AkelPad.TextReplace(0, "a", "bc", 0x00180000 /*FRF_UP|FRF_REGEXP*/, 1);

After replacement, in the first case the caret is at 5 position, in the second case at 3.
Locked