Scripts discussion (3)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Набросал маленький скрипт для вставки символов

Code: Select all

var hMainWnd=AkelPad.GetMainWnd();
var pText=AkelPad.InputBox(hMainWnd, "Insert char", "Char inserted: U+", "1234");
var pTextInsert;

pTextInsert=AkelPad.CallW("HexSel::Main", 1, 10, "", "", pText)

AkelPad.ReplaceSel(pTextInsert);
Подскажите, пожалуйста, почему вставляется символ и ноль, типа %0?

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

Post by KDJ »

Skif_off
"%" - from "HexSel::Main",
"0" - from AkelPad.ReplaceSel.
ReplaceSel is unnecessary.

Code: Select all

var pText=AkelPad.InputBox(AkelPad.GetMainWnd(), "Insert char", "Char inserted: U+", "1234");
if (typeof pText != "undefined")
  AkelPad.Call("HexSel::Main", 1, 10, "", "", pText);

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

Post by Skif_off »

KDJ
Thanks, I will fix it :)

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

Post by KDJ »

Skif_off
This can be done without HexSel plugin:

Code: Select all

var hMainWnd = AkelPad.GetMainWnd();
var sHex     = "002F";
var sText    = "";
var i;

if (AkelPad.GetEditWnd())
{
  for (;;)
  {
    sHex = AkelPad.InputBox(hMainWnd, "Insert characters from hex codes", "Four digits hex codes:", sHex);

    if (! sHex)
      break;
    else if (/[^a-f\d]+/i.test(sHex))
      AkelPad.MessageBox(hMainWnd, "Hex digits only (0-9, A-F).", "Error", 0x10 /*MB_ICONERROR*/);
    else
    {
      if (sHex = sHex.substr(0, Math.floor(sHex.length / 4) * 4))
      {
        for (i = 0; i < sHex.length; i += 4)
          sText += String.fromCharCode(parseInt(sHex.substr(i, 4), 16));

        AkelPad.ReplaceSel(sText);
      }
      break;
    }
  }
}


Instructor
HexSel-Eng.txt and HexSel-Rus.txt, line 21:
Call("HexSel::Main", 1, FLAGS, "PREFIX", "SUFFIX", INPUTLEN, INPUTCODEPAGE, **OUTPUT, *OUTPUTLEN)
Call("HexSel::Main", 1, FLAGS, "PREFIX", "SUFFIX", "INPUT", INPUTLEN, INPUTCODEPAGE, **OUTPUT, *OUTPUTLEN)
In English version is missing "INPUT" parameter.

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

Post by Skif_off »

KDJ
Thank you very much :) Why "Four digits hex codes:"? Plane 1 and other seems to work fine.

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

Post by Lenchik »

Предложение скриптописателям (а хорошо бы ещё и плагинописатели прислушались): сделать какую-нибудь общую для вас всех библиотеку, чтобы можно было нормально поддерживать выставленные в акельпаде и в системе изменения размера шрифта. А то неудобно — всё увеличил, а весь шрифт в окошках дополнительных мелкий-мелкий.
Да, придётся как-то более гибко относиться к размерам кнопок и полей под текст.

Image

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

Post by Skif_off »

Andrey_A_A
Случайно заметил разницу между плагином Sessions и скриптом BookmarksPlus.vbs
в номерах строк с закладками: n1,n2,n3 и n1+1,n2+1,n3+1 соотв. А почему? Плагин нумерует с 0?

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Skif_off
Не понял вопроса... Скрипт где-то не правильно работает?

Offline
Posts: 269
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Post by yozhic »

KDJ
Предложение по AkelPadDocsView.
Я добавил свой файл AkelFAQ.txt и прописал его вот сюда:

Code: Select all

  var aDoc = [
        ["AkelHelp",       ".htm"],
AkelPadDocsView его показывает :) А вот файл AkelFAQ.htm не показывает :( Вы не могли бы сделать так, чтобы в скрипт можно было добавлять не только пользовательские txt, но и пользовательские htm?

Offline
Posts: 269
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Post by yozhic »

Skif_off wrote:Плагин нумерует с 0?
viewtopic.php?p=23764#p23764

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

Post by KDJ »

yozhic
Example code modification:

Code: Select all

function GetArrayAPD(hWnd)
{
  var aDoc = [
        ["AkelFAQ",        ".htm"], //added
        ["AkelFAQ",        ".txt"], //added
        ["AkelHelp",       ".htm"],
        ["AkelHistory",    ".txt"],
        ["Clipboard",      ".txt"],
        ...
The files should have the following names:
AkelFAQ-Eng.htm
AkelFAQ-Eng.txt
and/or
AkelFAQ-Rus.htm
AkelFAQ-Rus.txt

It works!

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

Post by Skif_off »

Andrey_A_A
Всё правильно вроде, просто нечаянно обратил внимание на нюанс.

yozhic
Спасибо, вспомнил, что где-то обсуждалось, но не заострил внимание, хотел грохнуть пост и попробовать найти, но не успел.

Offline
Posts: 269
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Post by yozhic »

KDJ
Хм... Действительно работает. Вчера я пробовал на другом компьютере и там были проблемы с отображением htm... В любом случае, спасибо.

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

Post by VladSh »

Infocatcher
По backupVersion.js 0.1.5pre2.
Параметр forceDate (при "-forceDate=false -dateType=1") на файле, не имеющем информации о версии, почему-то влияет на выдачу сообщения "Не удалось определить версию файла!"; хотя может так и должно быть.
Не совсем понятно назначение этого флага. Думал, что если true, то будет брать дату файла, а если нет, то текущую. Или наоборот...))

При вызове с теми же параметрами, что выше, на файле скрипта BackupVersion.js получаю сообщение об ошибке:
---------------------------
Не удалось копировать текущий файл в «backupVersion-iewtopic.php?p=10791#10791.js»
Ошибка:
Недопустимый вызов или аргумент процедуры
---------------------------

При вызове с параметрами "-warnings=false -forceDate=false -dateType=1" на файле, не имеющем информации о версии, сначала сохранило с минутами, затем с секундами, а на 3-й раз выдало оригинальное имя файла, что не очень хорошо.

Остался на вызове с параметрами "-warnings=false -forceDate=true", более похоже то, что я хотел.
И, наверное, больше ничего переделывать не надо, и так здорово, только ошибки поправить.

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

Post by Skif_off »

Подскажите, пожалуйста, как правильно проверить существование файла:

Code: Select all

var hMainWnd     = AkelPad.GetMainWnd();
var pAkelPlugsDir= AkelPad.GetAkelDir(4);
var fso          = new ActiveXObject("Scripting.FileSystemObject");
var sHex         = "002F";
var sText        = "";
var i;

if (AkelPad.GetEditWnd())
{
  for (;;)
  {
    sHex = AkelPad.InputBox(hMainWnd, "Insert characters from hex codes", "Four digits hex codes:", sHex);

    if (! sHex)
      break;
    else if (/[^a-f\d]+/i.test(sHex))
      AkelPad.MessageBox(hMainWnd, "Hex digits only (0-9, A-F).", "Error", 0x10 /*MB_ICONERROR*/);
    else
    {
      if(fso.FileExists(pAkelPlugsDir + "\HexSel.dll"))
      {
        AkelPad.Call("HexSel::Main", 1, 10, "", "", sHex);
      }
      else
      {
        if (sHex = sHex.substr(0, Math.floor(sHex.length / 4) * 4))
        {
          for (i = 0; i < sHex.length; i += 4)
            sText += String.fromCharCode(parseInt(sHex.substr(i, 4), 16));

          AkelPad.ReplaceSel(sText);
        }
        break;
      }
    }
  }
}
Locked