Scripts discussion (3)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 269
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Post by yozhic »

KDJ
Предложение/просьба по скрипту AlignJustify.js :)

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

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

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

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

Post by DV »

yozhic,
В скрипте AlignJustify.js есть строка:
var nLenLine = 0;
Просто замените ее на:
var nLenLine = 80;

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

Post 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.

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

Post 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.

Offline
Posts: 173
Joined: Mon Dec 06, 2010 9:53 am
Location: г.Харьков, Русь

Post 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

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

Post by yozhic »

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

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

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post 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) – чтобы можно было показать меню (или еще какое окошко открыть) рядом с вызванным пунктом меню.

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

Post by Instructor »

Добавлено: параметр "SingleClick" - выбор пункта двойным или
одинарным нажатием.
Добавлено: параметр "ShowModify" - отображение модифицированности файла.

TabSwitch.js v3.4

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Instructor
Спасибо!

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

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

Post by KDJ »

AlignJustify.js
Added: parameter LineLength.

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

Post by KDJ »

ChooseFont_function.js
In function ChooseFont added optional argument sDialogTitle.

Offline
Posts: 3
Joined: Sun Aug 10, 2014 10:38 am

Post by Tigra »

KDJ, очень хорошая штука, но шрифт не держится при закрытии программы. Каждый раз приходится выставлять заново. Как бы сделать так, чтобы настройки сохранялись?

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

Post 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")

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

Post 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

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

Post 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);
}
Last edited by Instructor on Mon Aug 18, 2014 5:22 am, edited 1 time in total.
Locked