Scripts discussion (3)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 9
Joined: Fri Jan 29, 2016 11:04 am

Post by coherent »

opk44
Я из-за разнобоя (в плане кодировки) и спросил. У меня и в ANSI есть и в UTF-16LE. Но я правильно понимаю, что если всегда сохранять скрипт в UTF-16LE, то проблем не будет? Или возможны варианты?

Offline
Posts: 96
Joined: Tue Nov 10, 2015 4:56 am

Post by InFive »

KDJ wrote:Replace text in edit window.

Part 2:

Code: Select all

function MenuAE(hWnd, nID, nX, nY)
{
  var MF_STRING    = 0x0000;
  var MF_GRAYED    = 0x0001;
  var MF_CHECKED   = 0x0008;
  var MF_SEPARATOR = 0x0800;
  var hMenu        = oSys.Call("User32::CreatePopupMenu");
  var bSel         = SendMessage(hWnd, 3125 /*AEM_GETSEL*/, 0, 0);
  var sHelpFile    = GetAkelHelpFile();
  var bFont;
  var bWrap;
  var lpPOINT;
  var nCmd;

  if (nID == IDWHATE)
  {
    bFont = bFont1;
    bWrap = bWrap1;
  }
  else
  {
    bFont = bFont2;
    bWrap = bWrap2;
  }

  //menu from keyboard
  if (nX == 0xFFFF)
  {
    lpPOINT = AkelPad.MemAlloc(8);
    oSys.Call("User32::GetCaretPos", lpPOINT);
    oSys.Call("User32::ClientToScreen", hWnd, lpPOINT);
    nX = AkelPad.MemRead(_PtrAdd(lpPOINT, 0), 3 /*DT_DWORD*/);
    nY = AkelPad.MemRead(_PtrAdd(lpPOINT, 4), 3 /*DT_DWORD*/) + SendMessage(hWnd, 3188 /*AEM_GETCHARSIZE*/, 0 /*AECS_HEIGHT*/, 0);
    AkelPad.MemFree(lpPOINT);
  }

  oSys.Call("User32::AppendMenuW", hMenu, SendMessage(hWnd, 3075 /*AEM_CANUNDO*/, 0, 0) ? MF_STRING : MF_GRAYED, 1, sTxtUndo + "\tCtrl+Z");
  oSys.Call("User32::AppendMenuW", hMenu, SendMessage(hWnd, 3076 /*AEM_CANREDO*/, 0, 0) ? MF_STRING : MF_GRAYED, 2, sTxtRedo + "\tCtrl+Shift+Z");
  oSys.Call("User32::AppendMenuW", hMenu, MF_SEPARATOR);
  oSys.Call("User32::AppendMenuW", hMenu, bSel ? MF_STRING : MF_GRAYED, 3, sTxtCut + "\tCtrl+X");
  oSys.Call("User32::AppendMenuW", hMenu, bSel ? MF_STRING : MF_GRAYED, 4, sTxtCopy + "\tCtrl+C");
  oSys.Call("User32::AppendMenuW", hMenu, SendMessage(hWnd, 3035 /*AEM_CANPASTE*/, 0, 0) ? MF_STRING : MF_GRAYED, 5, sTxtPaste + "\tCtrl+V");
  oSys.Call("User32::AppendMenuW", hMenu, bSel ? MF_STRING : MF_GRAYED, 6, sTxtDelete + "\tDel");
  oSys.Call("User32::AppendMenuW", hMenu, MF_SEPARATOR);
  oSys.Call("User32::AppendMenuW", hMenu, oSys.Call("User32::GetWindowTextLengthW", hWnd) ? MF_STRING : MF_GRAYED, 7, sTxtSelAll + "\tCtrl+A");
  oSys.Call("User32::AppendMenuW", hMenu, MF_SEPARATOR);
  oSys.Call("User32::AppendMenuW", hMenu, bFont ? MF_CHECKED : MF_STRING, 8, sTxtAPFont + "\tCtrl+F");
  oSys.Call("User32::AppendMenuW", hMenu, bWrap ? MF_CHECKED : MF_STRING, 9, sTxtWrap + "\tCtrl+U");

  if (sHelpFile)
  {
    oSys.Call("User32::AppendMenuW", hMenu, MF_SEPARATOR);
    oSys.Call("User32::AppendMenuW", hMenu, oFSO.FileExists(AkelPad.GetAkelDir(5 /*ADTYPE_SCRIPTS*/) + "\\HtmlView.js") ? MF_STRING : MF_GRAYED, 10, sHelpFile + "\tF1");
  }

  nCmd = oSys.Call("User32::TrackPopupMenu", hMenu, 0x180 /*TPM_NONOTIFY|TPM_RETURNCMD*/, nX, nY, 0, hWnd, 0);
  oSys.Call("User32::DestroyMenu", hMenu);

  if (nCmd == 1)
    SendMessage(hWnd, 3077 /*AEM_UNDO*/, 0, 0);
  else if (nCmd == 2)
    SendMessage(hWnd, 3078 /*AEM_REDO*/, 0, 0);
  else if (nCmd == 3)
    SendMessage(hWnd, 3037 /*AEM_CUT*/, 0, 0);
  else if (nCmd == 4)
    SendMessage(hWnd, 3038 /*AEM_COPY*/, 0, 0);
  else if (nCmd == 5)
    SendMessage(hWnd, 3036 /*AEM_PASTE*/, 0, 0);
  else if (nCmd == 6)
    SendMessage(hWnd, 771 /*WM_CLEAR*/, 0, 0);
  else if (nCmd == 7)
    SendMessage(hWnd, 177 /*EM_SETSEL*/, 0, -1);
  else if (nCmd == 8)
  {
    if (nID == IDWHATE)
      bFont1 = ! bFont1;
    else
      bFont2 = ! bFont2;

    SetFontAE(nID);
  }
  else if (nCmd == 9)
  {
    if (nID == IDWHATE)
      bWrap1 = ! bWrap1;
    else
      bWrap2 = ! bWrap2;

    SetWrapAE(nID);
  }
  else if (nCmd == 10)
    AkelHelp(sHelpFile);
}

function GetAkelHelpFile()
{
  var sDir  = AkelPad.GetAkelDir(2 /*ADTYPE_DOCS*/) + "\";
  var sFile = "";

  if (AkelPad.GetLangId() == 1049 /*Russian*/)
  {
    if (oFSO.FileExists(sDir + "AkelHelp-Rus.htm"))
      sFile = "AkelHelp-Rus.htm";
    else if (oFSO.FileExists(sDir + "AkelHelp-Eng.htm"))
      sFile = "AkelHelp-Eng.htm";
  }
  else
  {
    if (oFSO.FileExists(sDir + "AkelHelp-Eng.htm"))
      sFile = "AkelHelp-Eng.htm";
    else if (oFSO.FileExists(sDir + "AkelHelp-Rus.htm"))
      sFile = "AkelHelp-Rus.htm";
  }

  return sFile;
}

function AkelHelp(sFile)
{
  if (sFile)
  {
    sFile = AkelPad.GetAkelDir(2 /*ADTYPE_DOCS*/) + "\" + sFile;

    if (oFSO.FileExists(AkelPad.GetAkelDir(5 /*ADTYPE_SCRIPTS*/) + "\\HtmlView.js"))
      AkelPad.Call("Scripts::Main", 1, "HtmlView.js", sFile + "#ch7");
  }
}

function MenuFind()
{
  var MF_STRING    = 0x0000;
  var MF_CHECKED   = 0x0008;
  var MF_POPUP     = 0x0010;
  var MF_SEPARATOR = 0x0800;
  var lpRECT = AkelPad.MemAlloc(16);
  var hMenu  = oSys.Call("User32::CreatePopupMenu");
  var hMenu1 = oSys.Call("User32::CreatePopupMenu");
  var nCmd;

  oSys.Call("User32::GetWindowRect", GetDlgItem(hDlg, IDFINDB), lpRECT);
  nX = AkelPad.MemRead(_PtrAdd(lpRECT, 8), 3 /*DT_DWORD*/);
  nY = AkelPad.MemRead(_PtrAdd(lpRECT, 4), 3 /*DT_DWORD*/);
  AkelPad.MemFree(lpRECT);

  oSys.Call("User32::AppendMenuW", hMenu1, (nFindDef == 1) ? MF_CHECKED : MF_STRING, 101, sTxtNext);
  oSys.Call("User32::AppendMenuW", hMenu1, (nFindDef == 2) ? MF_CHECKED : MF_STRING, 102, sTxtPrev);
  oSys.Call("User32::AppendMenuW", hMenu1, (nFindDef == 3) ? MF_CHECKED : MF_STRING, 103, sTxtLast);
  oSys.Call("User32::AppendMenuW", hMenu1, (nFindDef == 4) ? MF_CHECKED : MF_STRING, 104, sTxtFirst);
  oSys.Call("User32::AppendMenuW", hMenu1, MF_SEPARATOR);
  oSys.Call("User32::AppendMenuW", hMenu1, (nFindDef == 0) ? MF_CHECKED : MF_STRING, 100, sTxtNone);

  oSys.Call("User32::AppendMenuW", hMenu, MF_STRING, 1, sTxtNext  + "\tF3");
  oSys.Call("User32::AppendMenuW", hMenu, MF_STRING, 2, sTxtPrev  + "\tShift+F3");
  oSys.Call("User32::AppendMenuW", hMenu, MF_STRING, 3, sTxtLast  + "\tCtrl+F3");
  oSys.Call("User32::AppendMenuW", hMenu, MF_STRING, 4, sTxtFirst + "\tCtrl+Shift+F3");
  oSys.Call("User32::AppendMenuW", hMenu, MF_SEPARATOR);
  oSys.Call("User32::AppendMenuW", hMenu, MF_POPUP, hMenu1, sTxtFindDef);

  nCmd = oSys.Call("User32::TrackPopupMenu", hMenu, 0x1A8 /*TPM_RETURNCMD|TPM_NONOTIFY|TPM_BOTTOMALIGN|TPM_RIGHTALIGN*/, nX, nY, 0, hDlg, 0);
  oSys.Call("User32::DestroyMenu", hMenu1);
  oSys.Call("User32::DestroyMenu", hMenu);

  if ((nCmd > 0) && (nCmd < 100))
    Find(nCmd);
  else if (nCmd > 99)
  {
    nFindDef = nCmd - 100;
    SendDlgItemMessage(hDlg, IDFINDB, 12 /*WM_SETTEXT*/, 0, sTxtFind + (nFindDef ? "" : " >"));
  }
}

function ReadIni()
{
  try
  {
    eval(AkelPad.ReadFile(WScript.ScriptFullName.replace(/\.js$/i, ".ini"), 0x10 /*ADT_NOMESSAGES*/, 1200 /*UTF-16LE*/, 1));
  }
  catch (oError)
  {}
 
  if ((typeof nWhatH != "number") || (nWhatH < nEditMinH)) nWhatH = nEditMinH;
  nDlgMinH += nWhatH - nEditMinH;
  if (typeof nDlgX != "number") nDlgX = 200;
  if (typeof nDlgY != "number") nDlgY = 200;
  if ((typeof nDlgW != "number") || (nDlgW < nDlgMinW)) nDlgW = nDlgMinW;
  if ((typeof nDlgH != "number") || (nDlgH < nDlgMinH)) nDlgH = nDlgMinH;
  if (typeof bMatch != "boolean") bMatch = false;
  if (typeof bWord != "boolean") bWord = false;
  if (typeof bRegExp != "boolean") bRegExp = false;
  if (typeof bDotNL != "boolean") bDotNL = true;
  if (typeof bFunc != "boolean") bFunc = false;
  if ((typeof nRange != "number") || (nRange < 0) || (nRange > 4)) nRange = 3;
  if (typeof bFont1 != "boolean") bFont1 = false;
  if (typeof bFont2 != "boolean") bFont2 = false;
  if (typeof bWrap1 != "boolean") bWrap1 = false;
  if (typeof bWrap2 != "boolean") bWrap2 = false;
  if (typeof sWhat != "string") sWhat = "";
  if (typeof sWith != "string") sWith = "";
  if ((typeof nFindDef != "number") || (nFindDef < 1) || (nFindDef > 4)) nFindDef = 0;
  if (typeof nHistLen != "number") nHistLen = 10;
  if (nHistLen < 0)
    nHistLen = 0;
  else if (nHistLen > 99)
    nHistLen = 99;
  if (! (aHist instanceof Array)) aHist = [];
}

function WriteIni()
{
  var lpRECT = AkelPad.MemAlloc(16);
  var sText;
  var i;

  oSys.Call("User32::GetWindowRect", hDlg, lpRECT);
  oSys.Call("User32::ScreenToClient", hMainWnd, lpRECT);
  nDlgX = AkelPad.MemRead(_PtrAdd(lpRECT,  0), 3 /*DT_DWORD*/);
  nDlgY = AkelPad.MemRead(_PtrAdd(lpRECT,  4), 3 /*DT_DWORD*/);
  oSys.Call("User32::GetClientRect", hDlg, lpRECT);
  nDlgW = AkelPad.MemRead(_PtrAdd(lpRECT,  8), 3 /*DT_DWORD*/);
  nDlgH = AkelPad.MemRead(_PtrAdd(lpRECT, 12), 3 /*DT_DWORD*/);
  AkelPad.MemFree(lpRECT);

  sText =
    'nDlgX='    + ScaleUX(nDlgX) + ';\r\n' +
    'nDlgY='    + ScaleUY(nDlgY) + ';\r\n' +
    'nDlgW='    + ScaleUX(nDlgW) + ';\r\n' +
    'nDlgH='    + ScaleUY(nDlgH) + ';\r\n' +
    'nWhatH='   + ScaleUY(nWhatH) + ';\r\n' +
    'bMatch='   + bMatch + ';\r\n' +
    'bWord='    + bWord + ';\r\n' +
    'bRegExp='  + bRegExp + ';\r\n' +
    'bDotNL='   + bDotNL + ';\r\n' +
    'bFunc='    + bFunc + ';\r\n' +
    'nRange='   + nRange + ';\r\n' +
    'bFont1='   + bFont1 + ';\r\n' +
    'bFont2='   + bFont2 + ';\r\n' +
    'bWrap1='   + bWrap1 + ';\r\n' +
    'bWrap2='   + bWrap2 + ';\r\n' +
    'sWhat="'   + EscapeStr(sWhat) + '";\r\n' +
    'sWith="'   + EscapeStr(sWith) + '";\r\n' +
    'nFindDef=' + nFindDef + ';\r\n' +
    'nHistLen=' + nHistLen + ';\r\n' +
    'aHist=[';

  for (i = 0; i < aHist.length; ++i)
    sText += '["' + EscapeStr(aHist[i][0]) + '","' + EscapeStr(aHist[i][1]) + '","' + aHist[i][2] + '"]' + ((i == aHist.length - 1) ? '' : ',');

  sText += '];\r\n';

  AkelPad.WriteFile(WScript.ScriptFullName.replace(/\.js$/i, ".ini"), sText, sText.length, 1200 /*UTF-16LE*/, 1, 0x1 /*WFF_WRITEREADONLY*/);
}

function EscapeStr(sStr)
{
  return sStr.replace(/[\"]/g, '\\$&').replace(/\0/g, '\\0').replace(/\t/g, '\\t').replace(/\n/g, '\\n');
}

function UnEscapeStr(sStr)
{
  return sStr.replace(/(\\+)(.?)/g,
           function(s0, s1, s2)
           {
             if (s1.length % 2)
             {
               if (s2 == "0") s2 = "\0";
               else if (s2 == "t") s2 = "\t";
               else if (s2 == "n") s2 = "\n";
               return s1.substr(0, (s1.length - 1) / 2) + s2;
             }
             return s1.substr(0, s1.length / 2) + s2;
           });
}

function GetLangStrings()
{
  if (AkelPad.GetLangId(0 /*LANGID_FULL*/) == 1045) //Polish
  {
    sTxtDlgTitle     = 'Zamień Tekst';
    sTxtWhat         = '&Co:';
    sTxtWith         = 'Czy&m:';
    sTxtMatchCase    = 'Uwzględnij wielkość &liter';
    sTxtWholeWord    = 'Całe &wyrazy';
    sTxtRegExp       = 'Wyrażenia &regularne';
    sTxtDotMatchesNL = '&. dopasowuje \\n';
    sTxtWithFunc     = 'Zamień przez f&unkcję';
    sTxtRange        = 'Zakres do zamiany';
    sTxtBegToCaret   = '&1 - Początek - Kursor';
    sTxtCaretToEnd   = '&2 - Kursor - Koniec';
    sTxtSelection    = '&3 - Zaznaczenie';
    sTxtEntireDoc    = '&4 - Cały dokument';
    sTxtAllDocs      = '&5 - Wszystkie dokum.';
    sTxtReplace1     = '&Zamień jedno';
    sTxtReplaceAll   = 'Z&amień wszystko';
    sTxtHistory      = '&Historia';
    sTxtTemplates    = '&Szablony';
    sTxtFind         = 'Z&najdź';
    sTxtClose        = 'Zamknij';
    sTxtMenu         = '&Menu';
    sTxtOK           = 'OK';
    sTxtCancel       = 'Anuluj';
    sTxtUndo         = '&Cofnij';
    sTxtRedo         = '&Powtórz';
    sTxtCut          = '&Wytnij';
    sTxtCopy         = '&Kopiuj';
    sTxtPaste        = 'Wkl&ej';
    sTxtDelete       = '&Usuń';
    sTxtSelAll       = 'Zaznacz w&szystko';
    sTxtAPFont       = 'Czcionka AkelPad';
    sTxtWrap         = 'Zawijaj wiersze';
    sTxtRemove       = 'Usuń';
    sTxtClear        = 'Wyczyść';
    sTxtHistLen      = 'Długość historii';
    sTxtAdd          = 'Dodaj';
    sTxtRename       = 'Zmień nazwę';
    sTxtMoveUp       = 'W górę';
    sTxtMoveDown     = 'W dół';
    sTxtName         = 'Nazwa:';
    sTxtNext         = '&Następny';
    sTxtPrev         = '&Poprzedni';
    sTxtLast         = '&Ostatni';
    sTxtFirst        = 'Pier&wszy';
    sTxtNone         = 'Brak';
    sTxtFindDef      = 'Domyślne działanie "Znajdź"';
    sTxtAreYouSure   = 'Czy jesteś pewien ?';
    sTxtNotFound     = 'Nie znaleziono!';
    sTxtChangedDocs  = 'Zmienione dokumenty: ';
    sTxtCountChanges = 'Łączna liczba zmian: ';
    sTxtRegExpErr    = 'Błąd składni w wyrażeniu regularnym!';
    sTxtNoFuncErr    = 'Nie można utworzyć funkcji Zamiany!';
    sTxtNoTextErr    = 'Funkcja Zamiany nie zwraca tekstu!';
    sTxtRunTimeErr   = 'Błąd w czasie wykonywania funkcji Zamiany:';
  }
  else if (AkelPad.GetLangId(0 /*LANGID_FULL*/) == 1049) //Russian
  {
    //translated by YuS
    sTxtDlgTitle     = 'Замена текста';
    sTxtWhat         = 'Ч&то:';
    sTxtWith         = 'Ч&ем:';
    sTxtMatchCase    = 'Учитывать &регистр';
    sTxtWholeWord    = 'Слово &целиком';
    sTxtRegExp       = 'Регулярные в&ыражения';
    sTxtDotMatchesNL = '&. захватывает \\n';
    sTxtWithFunc     = 'Заменять на &функцию';
    sTxtRange        = 'Диапазон для замены';
    sTxtBegToCaret   = '&1 - До курсора';
    sTxtCaretToEnd   = '&2 - От курсора';
    sTxtSelection    = '&3 - В выделении';
    sTxtEntireDoc    = '&4 - Весь файл';
    sTxtAllDocs      = '&5 - Все файлы';
    sTxtReplace1     = '&Заменить';
    sTxtReplaceAll   = 'Заменить &всё';
    sTxtHistory      = '&История';
    sTxtTemplates    = '&Шаблоны';
    sTxtFind         = '&Найти';
    sTxtClose        = 'Закрыть';
    sTxtMenu         = '&Меню';
    sTxtOK           = 'OK';
    sTxtCancel       = 'Отмена';
    sTxtUndo         = 'От&менить';
    sTxtRedo         = '&Повторить';
    sTxtCut          = '&Вырезать';
    sTxtCopy         = '&Копировать';
    sTxtPaste        = 'В&ставить';
    sTxtDelete       = '&Удалить';
    sTxtSelAll       = 'Вы&делить всё';
    sTxtAPFont       = 'Шрифт AkelPad';
    sTxtWrap         = 'Перенос строк';
    sTxtRemove       = 'Удалить';
    sTxtClear        = 'Удалить всё';
    sTxtHistLen      = 'Количество строк';
    sTxtAdd          = 'Добавить';
    sTxtRename       = 'Переименовать';
    sTxtMoveUp       = 'Вверх';
    sTxtMoveDown     = 'Вниз';
    sTxtName         = 'Имя:';
    sTxtNext         = 'Следующее';
    sTxtPrev         = 'Предыдущее';
    sTxtLast         = 'Последнее';
    sTxtFirst        = 'Первое';
    sTxtNone         = 'Нет';
    sTxtFindDef      = 'По умолчанию: "Найти ..."';
    sTxtAreYouSure   = 'Вы уверены ?';
    sTxtNotFound     = 'Не найдено!';
    sTxtChangedDocs  = 'Изменённые документы: ';
    sTxtCountChanges = 'Количество замен: ';
    sTxtRegExpErr    = 'Синтаксическая ошибка в регулярном выражении!';
    sTxtNoFuncErr    = 'Невозможно создать функцию замены!';
    sTxtNoTextErr    = 'Функция замены текст не вернула!';
    sTxtRunTimeErr   = 'Ошибка выполнения функции замены:';
  }
  else
  {
    sTxtDlgTitle     = 'Text Replace';
    sTxtWhat         = '&What:';
    sTxtWith         = 'W&ith:';
    sTxtMatchCase    = 'Match &case';
    sTxtWholeWord    = '&Whole word';
    sTxtRegExp       = 'Regular e&xpressions';
    sTxtDotMatchesNL = '&. matches \\n';
    sTxtWithFunc     = 'Replace with f&unction';
    sTxtRange        = 'Range for Replace';
    sTxtBegToCaret   = '&1 - Beginning - Caret';
    sTxtCaretToEnd   = '&2 - Caret - End';
    sTxtSelection    = '&3 - Selection';
    sTxtEntireDoc    = '&4 - Entire document';
    sTxtAllDocs      = '&5 - All documents';
    sTxtReplace1     = '&Replace single';
    sTxtReplaceAll   = 'Replace &all';
    sTxtHistory      = '&History';
    sTxtTemplates    = '&Templates';
    sTxtFind         = '&Find';
    sTxtClose        = 'Close';
    sTxtMenu         = '&Menu';
    sTxtOK           = 'OK';
    sTxtCancel       = 'Cancel';
    sTxtUndo         = '&Undo';
    sTxtRedo         = '&Redo';
    sTxtCut          = 'C&ut';
    sTxtCopy         = '&Copy';
    sTxtPaste        = '&Paste';
    sTxtDelete       = '&Delete';
    sTxtSelAll       = 'Select &all';
    sTxtAPFont       = 'AkelPad font';
    sTxtWrap         = 'Wrap lines';
    sTxtRemove       = 'Remove';
    sTxtClear        = 'Clear';
    sTxtHistLen      = 'History length';
    sTxtAdd          = 'Add';
    sTxtRename       = 'Rename';
    sTxtMoveUp       = 'Move up';
    sTxtMoveDown     = 'Move down';
    sTxtName         = 'Name:';
    sTxtNext         = '&Next';
    sTxtPrev         = '&Previous';
    sTxtLast         = '&Last';
    sTxtFirst        = '&First';
    sTxtNone         = 'None';
    sTxtFindDef      = 'Default action "Find"';
    sTxtAreYouSure   = 'Are you sure ?';
    sTxtNotFound     = 'Not found!';
    sTxtChangedDocs  = 'Changed documents: ';
    sTxtCountChanges = 'Count of changes: ';
    sTxtRegExpErr    = 'Syntax error in regular expression!';
    sTxtNoFuncErr    = 'Can not create Replace function!';
    sTxtNoTextErr    = 'Replace function does not return a text!';
    sTxtRunTimeErr   = 'Run time error Replace function:';
  }
}


Part 1: TextReplace.js
not absolutely clearly to me - to keep the second part in the separate file or to add to the main file? simply for the first time I face such...

не совсем понятно мне - вторую часть сохранить в отдельный файл или добавить к основному файлу? просто в первый раз с таким сталкиваюсь...

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Kley
"Диалог..." лучше бы оставить внизу первого меню сессий; этот пункт не относится к конкретной сессии.
В остальном - великолепно! 8)

Offline
Posts: 2248
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

coherent
Сохранять нужно в кодировке которую сам АР может распознать.
А вообще, если вы не используете кириллицы в скрипте(в "строковых литералах") то подойдет практически любая(не думаю что будете сохранять в какой-нибудь Shift JIS), ибо даже если будет распознана неправильно, всё что нужно всё-равно будет "понятно" для интерпретатора.

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

Post by KDJ »

InFive
TextReplace.js
Added remark in the post: "All parts of the script should be saved in one file in Unicode format."

Offline
Posts: 96
Joined: Tue Nov 10, 2015 4:56 am

Post by InFive »

KDJ wrote:InFive
TextReplace.js
Added remark in the post: "All parts of the script should be saved in one file in Unicode format."
if to add the second part to the main file, in a script will some functions on two times are registered...
while I do nothing, I will wait when there is an opportunity to update a script through AkelUpdater.exe but while there are no updates...

если вторую часть добавить в основной файл, то в скрипте будет прописаны несколько функций по два раза...
пока ничего не буду делать, буду ждать когда появится возможность обновить скрипт через AkelUpdater.exe, но пока там нет обновлений...

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

Post by KDJ »

InFive
If you can not put the two parts of the script in one file and you can not update via AkelUpdater, remains a third possibility:
download archive KDJ.zip and unpack script file.

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

Post by YuS »

InFive wrote: не совсем понятно мне - вторую часть сохранить в отдельный файл или добавить к основному файлу? просто в первый раз с таким сталкиваюсь...
Рекомендую воспользоваться AkelUpdater-ом - очень удобно. Обновляются как сама программа, так и плагины со скриптами... кроме того, есть возможность проверки всего на актуальность.

Добавлено:
InFive wrote:буду ждать когда появится возможность обновить скрипт через AkelUpdater.exe, но пока там нет обновлений...
О, так уже пользуется...
Получается, что версия актуальная, раз нет обновлений.
Если есть сомнения, то можно в заголовке текущей локальной версии скрипта уменьшить дату, тогда появится возможность обновления

Offline
Posts: 96
Joined: Tue Nov 10, 2015 4:56 am

Post by InFive »

YuS wrote: Если есть сомнения, то можно в заголовке текущей локальной версии скрипта уменьшить дату, тогда появится возможность обновления
спасибо за совет... уменьшил дату в скрипте, и при обновлении скачался также файл InputBox_function.js, до этого я не встречал надписи о его скачивании при обновлении через AkelUpdater.exe...

видимо, я всегда обновлял TextReplace.js вручную, и какой-то глюк приключился, надо будет всегда его обновлять через AkelUpdater.exe, к тому же TextReplace.js при обновлении проверяет еще и обновление TextReplace_function.js...

хотя тот же скрипт SessionMenu.js не доступен из AkelUpdater.exe для обновления, ибо его там нет...

что-то не рекомендуется обновлять вручную, а что-то возможно обновлять только вручную...

несколько сложновато, хотя найдутся, конечно, для этого причины...

Offline
Posts: 1162
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

InFive wrote:что-то не рекомендуется обновлять вручную, а что-то возможно обновлять только вручную...

несколько сложновато, хотя найдутся, конечно, для этого причины...
Это не так, правильнее: что-то AkelUpdater.exe может обновить, что-то придётся обновлять вручную. AkelUpdater может и обновляет скрипты только из этих архивов.


VladSh
Не могли бы вы добавить новые скрипты во второй пост в коллекции? Правда, не помню, были ли ещё помимо скриптов Kley :)

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

coherent
Чтобы скрипты занимали меньше места на диске лучше сохранять в ANSI. Если в скрипте есть какие-то спецсимволы, которые могут потеряться при сохранении файла, тогда выбираем ту кодировку, в которой они находятся (UTF-<какую-нибудь>).

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Skif_off
Добавил информацию по скриптам KDJ, Kley и beotiger.
Ссылки на части убрал, т.к. сообщения слишком большие и не сохраняются. В первой части своего скрипта размещайте ссылки на следующие.

Вообще не удобно это всё, - много дурной работы по копированию информации о скриптах. Лучше бы какой-нибудь отдельный AkelPad'овский коллектор, типа Гитхаба. Или там это как-то ложить.
И обязательно чтобы общий список с описаниями как-то автоматически формировался.
Когда я создавал тему, то и предположить не мог, что такая гора кода будет навалена под AkelPad... Теперь лучше бы что-то более толковое, чем вот так вот выкладывать скрипты на страницы форума, разбивая их на части.

Offline
Posts: 9
Joined: Fri Jan 29, 2016 11:04 am

Post by coherent »

FeyFre, VladSh
Теперь все понятно. Спасибо!

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

Post by Kley »

SessionMenu.js
Добавлен новый параметр (возможность раздельной настройки меню и подменю)
Добавлен пункт меню "Удалить несуществующие". Появляется только, если в списке есть несуществующие файлы.
p.s. потестите пожалуйста. а то время, ну нет ваще.

VladSh
VladSh wrote:Добавил информацию по скриптам
Огромное спасибо!

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Kley
Всегда пожалуйста)

На первый взгляд скрипт работает великолепно! Никаких нареканий пока нет.

Моя строка вызова:

Code: Select all

"Меню сессий" Call("Scripts::Main", 1, "SessionMenu.js", `-m="%m" -i="%i" -p=1 -e=1 -es=18`) Icon("%a\AkelFiles\Plugs\Sessions.dll", 0)
Решает все мои хотелки.
Только никак не сделать, чтобы не по клику на кнопку, а по клику на стрелку справа от кнопки меню вылетало, по аналогии с вот такой записью:

Code: Select all

"Открыть..." Call("Scripts::Main", 1, "OpenEx.js", `-dir="%d\"`) Menu("OPEN") Icon(2)
но это, видимо скриптом никак не сделать...
Locked