Применение скрипта ко всем вкладкам

Russian main discussion
Post Reply
  • Author
  • Message
Offline
Posts: 14
Joined: Thu Aug 16, 2012 6:52 pm

Применение скрипта ко всем вкладкам

Post by vadim »

В AkelPad открыто несколько файлов, каждый в своей вкладке.
Есть Ява скрипт Script.js. Я могу его применить в AkelPad примерно так:
-"Скрипт" Call("Scripts::Main", 1, "Script.js")
Но это скрипт применится только к активной в данный момент вкладке.
А как его применить ко всем открытым в AkelPad файлам, не переходя из вкладки во вкладку вручную?

В операции "Поиск/Замена" такая возможность есть.

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

Post by KDJ »

vadim

Code: Select all

var hMainWnd     = AkelPad.GetMainWnd();
var lpFrameStart = AkelPad.SendMessage(hMainWnd, 1290 /*AKD_FRAMEFINDW*/, 1 /*FWF_CURRENT*/, 0);
var lpFrameCur   = lpFrameStart;

if (lpFrameStart)
{
  do
  {
    WScript.Echo("Edit file: " + AkelPad.GetEditFile(0));

    lpFrameCur = AkelPad.SendMessage(hMainWnd, 1290 /*AKD_FRAMEFINDW*/, 9 /*FWF_TABNEXT*/, lpFrameCur);
    AkelPad.SendMessage(hMainWnd, 1285 /*AKD_FRAMEACTIVATE*/, 0, lpFrameCur);
  }
  while (lpFrameCur && (lpFrameCur != lpFrameStart))
}

Offline
Posts: 14
Joined: Thu Aug 16, 2012 6:52 pm

Post by vadim »

Спасибо, KDJ!
Насколько я понял, чтобы скрипты применялись ко всем вкладкам, эту часть нужно вставлять в каждый JS-скрипт. И вставлять нужно примерно так:

Code: Select all

var hMainWnd     = AkelPad.GetMainWnd();
var lpFrameStart = AkelPad.SendMessage(hMainWnd, 1290 /*AKD_FRAMEFINDW*/, 1 /*FWF_CURRENT*/, 0);
var lpFrameCur   = lpFrameStart;

if (lpFrameStart)
{
  do
  {
    WScript.Echo("Edit file: " + AkelPad.GetEditFile(0));

   -------------
    КОД СКРИПТА
   -------------

    lpFrameCur = AkelPad.SendMessage(hMainWnd, 1290 /*AKD_FRAMEFINDW*/, 9 /*FWF_TABNEXT*/, lpFrameCur);
    AkelPad.SendMessage(hMainWnd, 1285 /*AKD_FRAMEACTIVATE*/, 0, lpFrameCur);
  }
  while (lpFrameCur && (lpFrameCur != lpFrameStart))
}
Запрос:

Code: Select all

    WScript.Echo("Edit file: " + AkelPad.GetEditFile(0));
вероятно, можно исключить? Мне он мешает.

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

Post by Skif_off »

vadim
WScript.Echo для примера, замените на код скрипта или, наверное, проще на вызов нужного скрипта с AkelPad.Call(), чтобы использовать для каждой вкладки только при необходимости.

Offline
Posts: 14
Joined: Thu Aug 16, 2012 6:52 pm

Post by vadim »

Вроде работает, спасибо!

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

Post by KDJ »

vadim
New script can be useful: RunScriptOnEachTab.js.

Offline
Posts: 366
Joined: Mon Jan 10, 2011 5:28 pm
Contact:

Post by Lenchik »

KDJ
Thank you. Would be great also to have not only command interface, buta visual also. Some text block (like one i am writing this post in). And some dropdown list-menu or something to select template from scripts available - "scriptname(|cursor|)" with insert button because we can call several scripts from command option of your script.
Maybe also check for line length if it is restricted somehow.

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

Post by KDJ »

Lenchik
This GUI already exists: runScript.js.
It is necessary to connect in some way both scripts.
I think it will be easier for Infocatcher to add in runScript.js the option of running on all tabs.

Offline
Posts: 14
Joined: Thu Aug 16, 2012 6:52 pm

Post by vadim »

KDJ wrote:vadim
New script can be useful: RunScriptOnEachTab.js.
Ну! Так даже лучше, возможностей больше. Спасибо!
Post Reply