Scripts discussion (1)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Instructor wrote:Масштабно :) Почему не в "Scripts collection"?
Опасаюсь неотловленных сюрпризов. :) Так что лучше подождать.

P.S. А еще мне было лень вникать в безумие с фунтамине только с ними).

Offline
Posts: 767
Joined: Mon Sep 28, 2009 10:03 am
Location: Minsk, Belarus

Post by se7h »

Infocatcher
Шрифт стандартный Arial

если что, в редакторе всё ок, индексы видны как надо

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

Post by Infocatcher »

se7h wrote:Шрифт стандартный Arial
А разве по умолчанию в диалогах Arial?
Опасаюсь неотловленных сюрпризов. :)
А вот и первый – подхватывалось любое выделение, а не только выражения, вычисляющиеся в числа.
Плюс добавил хоткеи для переключения.
measuresConverter.js
Но с хоткеями странный баг. Стоит один раз выбрать radiobutton мышкой, как хоткеи перестают работать (точнее, срабатывают один раз, а потом перестают).

Это помимо того, что с переключением по хоткеям могут быть сюрпризы безотносительно к этому багу. Но хоткеи можно просто не трогать. :D

[Upd]
Так, подправил, но не то. :)
Кажется, что-то не так с выбором целевой величины. :?

[Upd – 2]
А, понял. Я отключаю окно с фокусом.
http://www.transl-gunsmoker.ru/2009/06/ ... st_07.html
А ведь читал, давно еще. :)

Offline
Posts: 767
Joined: Mon Sep 28, 2009 10:03 am
Location: Minsk, Belarus

Post by se7h »

Infocatcher
условия задачи:
1. в AP выбран Arial, открыт скрипт, индексы отображаются без проблем
2. в WinXP тема NOOTOR, Arial по умолчанию, но циферки не наблюдаются

вопрос:
почему?

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

Post by Instructor »

KDJ
AlignJustify.js works not as expected when word wrap is on. It can be implemented if lines will be retrieved with EM_GETLINE or directly with AECHARINDEX->lpLine->wpLine.

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

Post by KDJ »

Instructor wrote:AlignJustify.js works not as expected when word wrap is on.
It is intended to operate with wordwrap off.
The idea is, to make it was independent of window width and font size.
Perhaps we should insert end-of-line characters in the wrapped lines (Format::LineFixWrap).

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

Post by KDJ »

I have found interesting.
The following code generates a runtime error in 8 line (Code: 800A1389).

Code: Select all

var hMainWnd = AkelPad.GetMainWnd();
var aStr = "abcdefghijklmnoprstuvwxyzABCDEFGHIJKLMNOPRSTUVWXYZ".split("");
aStr.sort(SortFun);
function SortFun(e1, e2) {
  var nRes = 0;
  e1 = e1.toUpperCase();
  e2 = e2.toUpperCase();
  if (e1 > e2)
    nRes = 1;
  else if (e1 < e2)
    nRes = -1;
  return nRes; }
If you remove the first line, it works properly.
Is this a bug JScript?

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

Post by Infocatcher »

KDJ
With

Code: Select all

WScript.Echo(aStr.sort(SortFun));
same error happens.


Обнаружил http://code.google.com/intl/en/apis/adw ... rency.html (пример запроса).
Но при кэшировании данных из-за двойного преобразования через базовую валюту теряется и так не особо высокая точность. Так что можно получить ошибку округления.
И надо что-то делать с высотой списка. Например, сделать combobox'ом. Но это пока лень.
Еще надоело перемещение целевой величины при выборе такой же исходной. Так что для двух вариантов поможет только кнопка «<=>» или Ctrl+U.
measuresConverter.js


[Upd]

Code: Select all

var aStr = "abcdefghijklmnoprstuvwxyzABCDEFGHIJKLMNOPRSTUVWXYZ".split("");
var ret = [];
for(var i = 0, l = aStr.length; i < l; i++)
	if(typeof aStr[i] != "string")
		ret.push(i + "=" + aStr[i] + " " + typeof aStr[i]);
WScript.Echo(ret.length && ret.join("\n")); // 0

Code: Select all

var aStr = "abcdefghijklmnoprstuvwxyzABCDEFGHIJKLMNOPRSTUVWXYZ".split("");
WScript.Echo(aStr.sort(SortFun));
function SortFun(e1, e2) {
  var nRes = 0;
  e1 = e1.toUpperCase();
  e2 = e2.toUpperCase();
  try {
  if (e1 > e2)
    nRes = 1;
  else if (e1 < e2)
    nRes = -1;
  } catch(e) { WScript.Echo(typeof e1); } // "unknown"
  return nRes; }

Code: Select all

var aStr = "abcdefghijklmnoprstuvwxyzABCDEFGHIJKLMNOPRSTUVWXYZ".split("");
WScript.Echo(aStr.sort(SortFun));
function SortFun(e1, e2) {
  var nRes = 0;
  e1 = e1.toUpperCase();
  if(typeof e1 != "string") // Doesn't happens
    WScript.Echo(e1 + " -> " + typeof e1);
  e2 = e2.toUpperCase();
  try {
  if (e1 > e2)
    nRes = 1;
  else if (e1 < e2)
    nRes = -1;
  } catch(e) { WScript.Echo(typeof e1); } // Doesn't happens
  return nRes; }
Fix:

Code: Select all

e1 = e1.toUpperCase() + "";
Very strange.

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

Post by KDJ »

Infocatcher
Thanks for your interest in the problem.
I did it like this:

Code: Select all

var hMainWnd = AkelPad.GetMainWnd();
var aStr = "abcdefghijklmnoprstuvwxyzABCDEFGHIJKLMNOPRSTUVWXYZ".split("");
aStr.sort(SortFun);
function SortFun(e1, e2) {
  var nRes = 0;
//  e1 = e1.toUpperCase();
//  e2 = e2.toUpperCase();
  if (e1.toUpperCase() > e2.toUpperCase())
    nRes = 1;
  else if (e1.toUpperCase() < e2.toUpperCase())
    nRes = -1;
  return nRes; }

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

Post by Infocatcher »

measuresConverter-test.js
<del>Теперь совсем тестовая.</del>
Теперь с ListBox'ами.
CheckBox'ы пока живы (аргумент -maxHeight), жалко их – больно возни с ними много было.
И теперь можно выделить одинаковые величины слева и справа. Ну да ладно.

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

Post by Infocatcher »

backupVersion.js
Изменен диалог запроса перезаписи файла – теперь у него три кнопки: да (перезаписать), нет (не перезаписывать и ввести другое имя) и отмена.
И теперь снова всегда показывается сообщение об успешном копировании файла. :)

measuresConverter-test.js
Исправлен хак для устранения ошибок округления.
Добавлено запоминание выбранных величин раздельно по типам.

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

Post by KDJ »

Infocatcher
measuresConverter.js is very good. Especially I like the currency.
It seems to me, that in the units of speed is a little mistake.
Knot it is a nautical mile per hour, ie 1.852 km/h.
And as we are already at sea, you can add the cable length = 1/10 nautical mile.
Last edited by KDJ on Mon Feb 28, 2011 9:54 pm, edited 1 time in total.

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

Post by FeyFre »

Не знаю в чем было дело, но в measuresConverter.js 1т = 100 кг, но в measuresConverter-test.js уже исправили 1т = 1000кг. Поройтесь, возможно там ещё подобные баги есть.

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

Post by Infocatcher »

KDJ wrote:Knot it is a nautical mile per hour, ie 1.852 km/h.
Thanks, fixed.
KDJ wrote:And as we are already at sea, you can add the cable length = 1/10 nautical mile.
Added.
FeyFre wrote:Не знаю в чем было дело, но в measuresConverter.js 1т = 100 кг, но в measuresConverter-test.js уже исправили 1т = 1000кг.
Было дело, исправлял. А все потому, что часть данных бралась из головы. Так что
FeyFre wrote:возможно там ещё подобные баги есть
Особенно в районе единиц измерения со степенями (квадраты, кубы).

measuresConverter.js

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

Post by KDJ »

In InsertTextLN.js added: "Replace selection" button.
Locked