Scripts discussion (4)

Discuss and announce AkelPad plugins
  • Author
  • Message
DV
Offline
Posts: 1294
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Re: Scripts discussion (4)

Post by DV »

Regarding the features of AkelPad's calculators, personally I am very impressed by the CalculatorJS by KDJ.
Take a look at this screenshot that demonstrates how the CalculatorJS deals with variables:

Image

At first, we have a value `x=10` that has been set by means of "Result to X".
Then, we have an inline variable `a=5`.
Finally, the result is an array that uses the current values of both `a` and `x`.
To me, this is simply amazing.

Offline
Posts: 47
Joined: Sat Jul 05, 2008 11:30 am
Location: Odesa, Ukraine

Re: Scripts discussion (4)

Post by ewild »

DV, of cource, you're right. KDJ's CalculatorJS is great, too.
Definitely, I use it from time to time, when needed (overall, I have five js calculators). But it is, to say... too powerful.
It's a scientific-level calculator with a rich interface. However, there are simpler tasks for which mathCalc fits better, from my point of view.
By the way, mathCalc is only one of them that handles in-text % operations, all the other would return syntax errors there.

DV, incidentally, do you know if there are any hints/tricks/settings on how to get rid of those .99999999999999 in CalculatorJS?

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

Re: Scripts discussion (4)

Post by DV »

ewild wrote: Thu Dec 19, 2024 3:03 pmif there are any hints/tricks/settings on how to get rid of those .99999999999999 in CalculatorJS?
We may try an approach similar to this one (the `format_result` method):
https://github.com/d0vgan/nppexec/blob/ ... .cpp#L1018

Though I can't advise where exactly to do something like that in the CalculatorJS.

Offline
Posts: 5
Joined: Tue Nov 12, 2024 10:28 pm

Re: Scripts discussion (4)

Post by xOleg »

MathCalc -- это просто интерфейс к функции eval() Яваскрипта. Он умеет ровно то же, что и она. И не умеет, кстати, тоже (Например, возводит в степень только через Math.pow()). Единственная идея там -- это способ использования, когда математические расчеты являются просто редактированием текста. Подсмотренно у MathCAD, как я и указал в описании.

Offline
Posts: 47
Joined: Sat Jul 05, 2008 11:30 am
Location: Odesa, Ukraine

Re: Scripts discussion (4)

Post by ewild »

xOleg wrote: Fri Dec 20, 2024 10:27 am...Единственная идея там...
A good idea makes the difference.
xOleg,
By the way, I have an idea for your MathCalc script:
An option to sum all the numbers within the text/selection with modes a. sum only, b. sum regarding the minus sign before numbers.
It can work out as follows:

Code: Select all

$start=AkelPad.GetSelStart();
$end=AkelPad.GetSelEnd();
if ($start == $end)
AkelPad.SetSel(0,-1);
$text=AkelPad.GetSelText();

// extract numbers off the text/selection and make a sum expression from it
$plus=$text.replace(/[^0-9.]/g,"+").replace(/^[+.0]+(\d)/g,"$1").replace(/(\d)[+.]+$/g,"$1").replace(/\+(0|[.])+/g,"+").replace(/\++/g,"+").replace(/(\d)[.][+]/g,"$1+")
// same as above but retain minus sign before numbers and use it in the expression as such
$math=$text.replace(/[^0-9.-]/g,"+").replace(/^[+-.0]+(\d)/g,"$1").replace(/(\d)[+-.]+$/g,"$1").replace(/\+0+/g,"+").replace(/\-0+/g,"-").replace(/\+[.-]+\+/g,"+").replace(/\++/g,"+").replace(/(\d)[.][+]/g,"$1+")

$text=$text+'\r'+$math+'\r'+$plus+'\r'

AkelPad.ReplaceSel($text);

AkelPad.SetSel($start,$start);
Video illustration:
https://i.imgur.com/4CyGtax.mp4

Here, the example script prepares the expressions, and then MathCalc does the actual maths.

Text for testing:

Code: Select all

Lorem ipsum 000 dolor 111 sit amet,
Nullam ut 222 finibus 333 lectus.
"Praesent 444 eusem 555 lorem."
Fusce 05-09-2024 elementum gravida luctus?
Sed non 2,5 accumsan lorem!
1. Vivamus at mauris mi[1]
2. Duis ac faucibus elit.[2][3]
3. Sed sed 'tempor' diam.
Vivamus tincidunt tristique dolor.[4,5]
Morbi vel 25.25 blandit augue.

Offline
Posts: 5
Joined: Tue Nov 12, 2024 10:28 pm

Re: Scripts discussion (4)

Post by xOleg »

I have an idea for your MathCalc script
Смысл понятен, но для латинницы такого не сделать, поскольку будут отброшены встроенные функции и еще много разных интересных вещей. Например:

{sin(PI/6)} = 0.5

Но, самое главное, что такое изменение противоречило бы самой концепции скрипта как "живых" математических вычислений. Вот небольшая демонстрация, как все работает:

https://youtu.be/oNnZl-bF5E8

Offline
Posts: 47
Joined: Sat Jul 05, 2008 11:30 am
Location: Odesa, Ukraine

Re: Scripts discussion (4)

Post by ewild »

xOleg,
It could be a part of such a live math-in-text flow, too.
That's why I offered it.
From my point of view, it fits MathCalc conception pretty harmonically.
For instance, you're typing 'I bought 5 apples in the morning, and then Maria gifted me 7 more apples in the noon, so now I have' {hitting a magic button, and voila!} 5+7 = 12 {typing further} 'ones!'

OK then, meet mathText.js.
Yet another math script in the collection.
https://akelpad.sourceforge.net/forum/v ... 657#p36657

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

Re: Scripts discussion (4)

Post by VladSh »

ewild
Подобный скрипт уже был - SumNumbers.js.

Offline
Posts: 11
Joined: Sat Nov 30, 2024 1:56 pm

Re: Scripts collection

Post by AkulaBig »

В скрипте FindReplaceFiles.js под Вин 11 выдает ошибку:
строка 663: nID = oSys.Call("User32::GetDlgCtrlID", oSys.Call("User32::GetFocus"));
Если нажать Отмена, новая ошибка:
строка 744: oSys.Call("User32::SetWindowTextW", hWnd, sText);
Image
Пробовал различные сборки с AkelPad различных версий. Поэтому решил, что ошибка, скорей всего из-за Винды.
Помогите устранить ошибку.
Попробовал скрипт на Вин 7. Отлично работает. Все дело, как я и предполагал в Вин 11.

Offline
Posts: 47
Joined: Sat Jul 05, 2008 11:30 am
Location: Odesa, Ukraine

Re: Scripts discussion (4)

Post by ewild »

VladSh wrote: Fri Jan 10, 2025 8:21 am ewild
Подобный скрипт уже был - SumNumbers.js.
There are no similar scripts.
Moreover, my script went way farther than that.
Its feature-complete version supports all basic arithmetic operations [+-*/%] in the whole text, or in the selection, or in the current line, or all that at once.
It is the only math script for AkelPad that handles percent calculations properly.
And it doesn't have the 0.999999999(9)-like issue.
Unfortunately, I have no motivation for the script to reach the publication-ready phase.
Example text:

Code: Select all

.1
+20 Lorem ipsum .5 dolor sit amet.
80+50% 80-50% 80*50% 80/50%
.2 "Morbi vel blandit augue?"
Morbi eu tortor 20 ligula.
30%
Example feature-complete script output:

Code: Select all

all text plus  : 0.1+20+0.5+80+50+80+50+80+50+80+50+0.2+20+30 = 590.8
all text minus : 0.1+20+0.5+80+50+80-50+80+50+80+50+0.2+20+30 = 490.8
all text basic : 0.1+20+0.5+80+50+80-50+80*50+80/50+0.2+20+30 = 4232.4
all text full  : 0.1+20+0.5+80+50%+80-50%+80*50%+80/50%+0.2+20+30 = 3432.8

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

Re: Scripts collection

Post by DV »

ewild wrote: Wed Jul 09, 2025 11:49 am runPowerShell.js
You may also be interested in RunMe.js which can run .ps1 and other file extensions.

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

Re: Scripts discussion (4)

Post by VladSh »

Infocatcher
Приветствую!
Есть пару предложений по скриптам crypt.js и cryptExt.js.
1. Есть кнопочка "Применить", которая применяет изменения, но не закрывает диалог. Было бы вообще прекрасно, если бы кнопка "Отмена" также не закрывала диалог, а отменяла только что сделанные изменения кнопкой "Применить". Закрыть диалог можно крестиком или нажатием Esc, а вот быстро отменить (например, если неверно ввёл пароль или выбрал неверные алгоритмы шиврования) - никак.
Да, и было бы здорово, чтобы для отмены также работала комбинация клавиш Ctrl+Z (в описании скрипта сказано о ней, но она не работает).
2. Было бы здорово иметь параметр скрипта, который бы при каждом открытии диалога сбрасывал установленные алгоритмы шифрования (не запоминал их), чтобы пользователь сам выбирал нужные.

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

Re: Scripts discussion (4)

Post by Infocatcher »

VladSh wrote: Thu Aug 07, 2025 4:30 pm Есть пару предложений по скриптам crypt.js и cryptExt.js.
1. Есть кнопочка "Применить", которая применяет изменения, но не закрывает диалог. Было бы вообще прекрасно, если бы кнопка "Отмена" также не закрывала диалог, а отменяла только что сделанные изменения кнопкой "Применить". Закрыть диалог можно крестиком или нажатием Esc, а вот быстро отменить (например, если неверно ввёл пароль или выбрал неверные алгоритмы шиврования) - никак.
Да, и было бы здорово, чтобы для отмены также работала комбинация клавиш Ctrl+Z (в описании скрипта сказано о ней, но она не работает).
Насчет функции кнопки «Отмена» не уверен, надо подумать. Обычно всякие диалоговые окна но нажатию отмены ничего не откатывают.
Ctrl+Z зависит от контрола в фокусе, у текстовых полей своя атмосфера, для них как-то сложнее перехватывать обработку клавиатурных нажатий.
У crypt.js пропадал фокус из окна, если нажать «Применить» (блокировалось окно кнопки, находящееся в фокусе, такое надо вручную восстанавливать), исправил: https://github.com/Infocatcher/AkelPad_ ... ae4e83f333
VladSh wrote: Thu Aug 07, 2025 4:30 pm 2. Было бы здорово иметь параметр скрипта, который бы при каждом открытии диалога сбрасывал установленные алгоритмы шифрования (не запоминал их), чтобы пользователь сам выбирал нужные.
А -saveOptions=0 не подходит?
В дополнение только галочка «показывать пароль» перестанет запоминаться. Но она, по идее, не сильно критична, сам я чаще смотрю, проверяю и скрываю обратно.

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

Re: Scripts discussion (4)

Post by VladSh »

Infocatcher wrote: Thu Aug 07, 2025 8:49 pm Насчет функции кнопки «Отмена» не уверен, надо подумать. Обычно всякие диалоговые окна но нажатию отмены ничего не откатывают.
Ну, может, просто название кнопки поменять, типа "Вернуть". Но очень хотелось бы делать и "Применить", и "Вернуть" на закрывая диалога. Для закрытия диалога, по моему, двух способов достаточно.
Infocatcher wrote: Thu Aug 07, 2025 8:49 pm У crypt.js пропадал фокус из окна, если нажать «Применить» (блокировалось окно кнопки, находящееся в фокусе, такое надо вручную восстанавливать), исправил...[/url]
Номер версии и дата скрипта не поменялись; так и должно быть?
Infocatcher wrote: Thu Aug 07, 2025 8:49 pm А -saveOptions=0 не подходит?
Подходит, спасибо! Что-то я видимо не дочитал...

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

Re: Scripts discussion (4)

Post by Infocatcher »

VladSh wrote: Fri Aug 08, 2025 9:32 am Ну, может, просто название кнопки поменять, типа "Вернуть". Но очень хотелось бы делать и "Применить", и "Вернуть" на закрывая диалога. Для закрытия диалога, по моему, двух способов достаточно.
Повсюду в системных окошках и в самом же AkelPad есть кнопка «Отмена». Сложно сказать, откуда изначально пошло, видимо, чтобы кнопки действий были в одном месте, это интуитивнее, что вот он – выбор из стольки-то вариантов.
Тут скорее дополнительную кнопку цеплять.
Но если запускать мышкой по кнопке «Применить», фокус по итогу возвращается на кнопку, и работает Ctrl+Z для отмены.
VladSh wrote: Fri Aug 08, 2025 9:32 am Номер версии и дата скрипта не поменялись; так и должно быть?
Да, я обычно в каждом коммите версию не меняю, мусор в истории изменений образовывается. Вообще, изначальная задумка была выкладывать окончательные версии в тему про коллекцию скриптов (и в архив), а предварительным (и хоть как-то проверенным) версиям менять номер и дату. А сейчас там накопились какие-то изменения, которые надо бы проверить, прежде чем отмечать текущее состояние новой версией, но это не единственный скрипт, в котором я что-то поменял, будто бы ничего не сломав, но до осмысленной проверки так и не добрался:
Image

Вообще, в целом, скрипты, поломанные чем-то большим и недовнедренным, на GitHub не попадают, а сначала отправляются в отдельную локальную ветку, так что если что-то чинилось – есть смысл брать самую свежую доступную версию.
Осталось только найти время и обновить еще и тут в коллекции. Но все равно хочется выкладывать только после дополнительной проверки, а это, увы, не всегда получается успевать.
Post Reply