Page 14 of 99

Posted: Thu Aug 07, 2014 8:24 am
by yozhic
KDJ
Предложение/просьба по скрипту AlignJustify.js :)

Добавить возможность Justify выделенного текста по заданной длине строки.

Сейчас скрипт ищет в выделенном тексте самую длинную строку и по ней выравнивает все остальные. А хотелось бы, чтобы можно было задать длину строки (например 80) и скрипт бы выравнял строки по длине 80, даже если в выделенном отрезке нет ни одной строки на 80.

Эх, тогда бы вместе с Инструкторовским LineWrap получился бы замечательный инструмент для «ASCII»-оформления текста!

Posted: Thu Aug 07, 2014 8:59 am
by DV
yozhic,
В скрипте AlignJustify.js есть строка:
var nLenLine = 0;
Просто замените ее на:
var nLenLine = 80;

Posted: Thu Aug 07, 2014 12:58 pm
by yozhic
DV
Оч. хорошо. Спасибо за подсказку :) Я пока сделал так (по аналогии с дургими скриптами, с аргументом запуска):

Code: Select all

var bShowInput=AkelPad.GetArgValue("ShowInput", true);
...
if (bShowInput)
  nLenLine = AkelPad.InputBox(hEditWnd, "Set string length", "Enter legnth of the string", "80");
Но, совершенно точно, есть более правильное решение, потому что я сам скрипты не умею писать :? Поэтому жду, может откликнется KDJ.

Posted: Thu Aug 07, 2014 1:52 pm
by VladSh
yozhic
Я бы так сделал:

Code: Select all

// -1 - to set value in dialog
var nLenLine = AkelPad.GetArgValue("lenline", 0);	// by default
...
if (nLenLine == -1) 
   nLenLine = AkelPad.InputBox(hEditWnd, "Set string length", "Enter legnth of the string", "80");
В вашем случае - просто передавайте в аргументах -lenline=80.

Posted: Thu Aug 07, 2014 2:47 pm
by San_dr
yozhic
Есть еще универсальный скрипт, кнопка на его основе такая:

Code: Select all

-"Собрать текст в колонку N-ной ширины" Call("Scripts::Main", 1, "FormatLinesLenght.vbs")
P.S.
Если на форуме не найдете (это скрипт Andrey_A_A), то в его сборке http://forum.ru-board.com/topic.cgi?for ... pic=4764#1

Posted: Thu Aug 07, 2014 4:17 pm
by yozhic
VladSh
Спасибо, так намного лучше. Единственное только, теперь если в InputBox нажать Cancel, то скрипт удаляет из текста все пробелы. Но я пока не планирую Cancel нажимать, да и Ctrl+Z имеется :)
Добавлено позже:
Дописал одно условие, теперь скрипт не удаляет пробелы при нажатии на Cancel. Но всё это костыли. Хорошо бы, чтоб KDJ хозяйскую руку приложил.

San_dr
Спасибо за совет. Этот скрипт не делает выключку по обоим краям, только обрезает строки по определённой длине. То есть выполняет работу, аналогичную инструкторовскому LinesWrap.js .

Posted: Fri Aug 08, 2014 3:01 pm
by Infocatcher
Instructor
Пожелание по TabSwitch.js: добавить «*» к измененным вкладкам в списке.
И неплохо бы сделать возможность переключения на вкладку одинарным кликом вместо двойного, чтобы в виде

Code: Select all

-"Список окон…" Call("Scripts::Main", 1, "TabSwitch.js", `-Next=-1 -CtrlTab=false -RightLeft=true -MinTabs=1 -WindowLeft=%bl -WindowTop=%bb`)
было больше похоже на меню.

Кстати, пожалуй, есть смысл сделать аналогичные параметры и для меню (%bl, %bb) – чтобы можно было показать меню (или еще какое окошко открыть) рядом с вызванным пунктом меню.

Posted: Fri Aug 08, 2014 5:18 pm
by Instructor
Добавлено: параметр "SingleClick" - выбор пункта двойным или
одинарным нажатием.
Добавлено: параметр "ShowModify" - отображение модифицированности файла.

TabSwitch.js v3.4

Posted: Fri Aug 08, 2014 5:29 pm
by Infocatcher
Instructor
Спасибо!

P.S. Что-то у меня ссылка на скриншот 404 выдает.

Posted: Sat Aug 09, 2014 7:24 pm
by KDJ
AlignJustify.js
Added: parameter LineLength.

Posted: Mon Aug 11, 2014 8:29 pm
by KDJ
ChooseFont_function.js
In function ChooseFont added optional argument sDialogTitle.

Posted: Wed Aug 13, 2014 12:41 pm
by Tigra
KDJ, очень хорошая штука, но шрифт не держится при закрытии программы. Каждый раз приходится выставлять заново. Как бы сделать так, чтобы настройки сохранялись?

Posted: Wed Aug 13, 2014 2:03 pm
by KDJ
Tigra
TabFont.js wrote:

Code: Select all

// For autostart, in AkelPad.ini or registry CmdLineBegin/CmdLineEnd key, need to add eg:
//   /Call("Scripts::Main", 1, "TabFont.js", "2")

Posted: Wed Aug 13, 2014 6:18 pm
by KDJ
TabFont.js
Added:
- ability to set any installed font,
- ability to increase/decrease font size,
- Choose Font dialog,
- saving last used font in .ini file.
Required to include the new version (2014-08-11) ChooseFont_function.js

Posted: Thu Aug 14, 2014 4:20 am
by Instructor
KDJ
TextMarker.js request - adding marks list.

Code: Select all

var lpStack;
var lpMarkText;
var lpMarkItem;
var dwMarkID;
var pText;

if (lpStack=AkelPad.MemAlloc(_X64?16:8 /*sizeof(STACKMARKTEXT)*/))
{
  AkelPad.Call("Coder::HighLight", 12 /*DLLA_HIGHLIGHT_GETMARKSTACK*/, AkelPad.GetEditWnd(), AkelPad.GetEditDoc(), lpStack);

  lpMarkText=AkelPad.MemRead(lpStack + 0 /*offsetof(STACKMARKTEXT, first)*/, 2 /*DT_QWORD*/)

  while (lpMarkText)
  {
    dwMarkID=AkelPad.MemRead(lpMarkText + (_X64?24:12) /*offsetof(MARKTEXT, dwMarkID)*/, 3 /*DT_DWORD*/);

    if (dwMarkID != -2 /*MARKID_SELECTION*/)
    {
      lpMarkItem=AkelPad.MemRead(lpMarkText + (_X64?16:8) /*offsetof(MARKTEXT, hMarkTextHandle)*/, 2 /*DT_QWORD*/);
      lpText=AkelPad.MemRead(lpMarkItem + (_X64?24:12) /*offsetof(AEMARKTEXTITEMW, pMarkText)*/, 2 /*DT_QWORD*/);
      pText=AkelPad.MemRead(lpText, 1 /*DT_UNICODE*/);
      //More info from AEMARKTEXTITEMW
      //...

      WScript.Echo(pText);
    }
    lpMarkText=AkelPad.MemRead(lpMarkText + 0 /*offsetof(MARKTEXT, next)*/, 2 /*DT_QWORD*/)
  }
  AkelPad.MemFree(lpStack);
}