Scripts discussion (1)
- Author
- Message
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
VladSh
Сейчас никак. Scripts может взаимодействовать с плагинами не круче чем ContextMenu, ToolBar, HotKeys, т.е. только вызвать с дополнительными параметрами. Что-то вернуть пока не может. Разве что что-то в буфере обмена оставит(кстати, можете попросить Инструктора что-бы добавил такую подфункцию). Мне, например, не помешала бы возможность программно вызвать ContextMenu(из SpellCheck) со списком дополнительных пунктов, и что-бы он вернул мне выбор из этого списка(если таков есть).
Сейчас никак. Scripts может взаимодействовать с плагинами не круче чем ContextMenu, ToolBar, HotKeys, т.е. только вызвать с дополнительными параметрами. Что-то вернуть пока не может. Разве что что-то в буфере обмена оставит(кстати, можете попросить Инструктора что-бы добавил такую подфункцию). Мне, например, не помешала бы возможность программно вызвать ContextMenu(из SpellCheck) со списком дополнительных пунктов, и что-бы он вернул мне выбор из этого списка(если таков есть).
-
Offline
- Posts: 98
- Joined: Thu Jul 03, 2008 7:23 pm
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
А чего сами не попросите?FeyFre wrote:(кстати, можете попросить Инструктора что-бы добавил такую подфункцию). Мне, например, не помешала бы возможность программно вызвать ContextMenu(из SpellCheck) со списком дополнительных пунктов, и что-бы он вернул мне выбор из этого списка(если таков есть).
Я уже прошу это 2 года.
Меню, о котором Вы говорите, - это частный случай - выбор только одного значения из списка.
Пока что мы имеем ShowMenu.js из дистрибутива плагина, но его не совсем удобно, вернее идеологически неправильно, использовать, т.к. данные должны сохраняться ВНЕ скрипта (в виде списка, как в ini), чтобы их мог корректировать любой пользователь, не боясь задеть скрипт! Я хотел переделать его, сделать более универсальным, спрашивал, как это сделать, но мне так никто и не ответил...
Но всё же считаю, что это должен быть не скрипт, а именно встроенная функция, принимающая массив.
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
Так?VladSh wrote:Я хотел переделать его, сделать более универсальным, спрашивал, как это сделать, но мне так никто и не ответил...
Code: Select all
var lpItems=[];
var nItem;
var lpArrayName=new Array("JS", "LSS", "VBS");
var lpArrayExt=new Array("js", "lss", "vbs");
for (nItem=0; nItem < lpArrayName.length; ++nItem)
lpItems[nItem]=[lpArrayName[nItem], MF_NORMAL, lpArrayExt[nItem]];
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
Попрошу когда буду считать нужным и возможным.А чего сами не попросите?
Может я и идиот, но помоему AkelPad.ReadFile() может прочитать любой текстовый файл. А в скрипте его распарсить можно любым известным вам способом: от написания парсера в лоб, до трёх-этажных регулярных выражений. Чего же тут сложного?спрашивал, как это сделать, но мне так никто и не ответил...
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
FeyFre
Никто не идиот
Просто смешивать данные с кодом это ещё хуже, чем смешивать бизнеслогику с интерфейсом. В идеале данные должны быть в отдельном файле, чтобы любой ОБЫЧНЫЙ пользователь мог преспокойно менять данные, не боясь что-то зацепить.
Пример: файл с типами файлов для диалога создания и других меню:
По такому же принципу должно быть построено всё.
Ещё пример: пользователь часто вводит какое-то команды для какого-то скрипта исполнения (стараться особо не буду выдумывая команды):так вто это должны быть просто команды, чтобы пользователь зашёл и добавил то, что он хочет, а не занимался в скрипте каждый раз "распарсиванием", т.е. должен быть общий механизм, который вызывает такие файлы и налету создаёт меню для выбора.
Чтобы унифицировать это, я предлагал в папке Scripts создать папку Params, а в ней либо файлы с именем скрипта (допустим MyScript.param) или папку по названию скрипта (когда у одного скрипта может быть несколько файлов), так мы и сделали для newFileTemplate. Вот так должно быть унифицировано всё. Но только надо написать общий механизм формирования меню, а затем уже дёргать ShowMenu.js, а по наименованию текущего скрипта меню будет само формироваться...
Спасибо за код
Никто не идиот
Просто смешивать данные с кодом это ещё хуже, чем смешивать бизнеслогику с интерфейсом. В идеале данные должны быть в отдельном файле, чтобы любой ОБЫЧНЫЙ пользователь мог преспокойно менять данные, не боясь что-то зацепить.
Пример: файл с типами файлов для диалога создания и других меню:
Code: Select all
JS
LSS
VBS
Ещё пример: пользователь часто вводит какое-то команды для какого-то скрипта исполнения (стараться особо не буду выдумывая команды):
Code: Select all
cmd
regedit
msconfig
Чтобы унифицировать это, я предлагал в папке Scripts создать папку Params, а в ней либо файлы с именем скрипта (допустим MyScript.param) или папку по названию скрипта (когда у одного скрипта может быть несколько файлов), так мы и сделали для newFileTemplate. Вот так должно быть унифицировано всё. Но только надо написать общий механизм формирования меню, а затем уже дёргать ShowMenu.js, а по наименованию текущего скрипта меню будет само формироваться...
Спасибо за код
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Наблюдение:
- для скрипта, который получает текст из выделения методом GetSelText(), преобразование содержимого в массив строк производится так:
- для скрипта, который получает текст из выделения методом GetSelText(), преобразование содержимого в массив строк производится так:
- для скрипта, который получает текст путём чтения другого файла методом ReadFile(), преобразование содержимого в массив строк производится так:var arrContent = strContent.split('\r');
var arrContent = strContent.split('\r\n');
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
FeyFre
Из скрипта я могу узнать, какой скрипт его вызвал (какой был запущен изначально). По идее почему бы не определять что инициировало запуск скрипта: ContextMenu, Hotkeys или просто Scripts? Ведь эта информация есть у редактора, и даже какой скриптовый файл был запущен.
Я всё же думаю, что можно, только не знаю как...
Про параметр знаю, сам так делал, но это как-то не элегантно...
Из скрипта я могу узнать, какой скрипт его вызвал (какой был запущен изначально). По идее почему бы не определять что инициировало запуск скрипта: ContextMenu, Hotkeys или просто Scripts? Ведь эта информация есть у редактора, и даже какой скриптовый файл был запущен.
Я всё же думаю, что можно, только не знаю как...
Про параметр знаю, сам так делал, но это как-то не элегантно...
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
Метода, как взять эту информацию нету. Ждите ответа Инструктора если не верите мне.Ведь эта информация есть у редактора, и даже какой скриптовый файл был запущен.
Я всё же думаю, что можно, только не знаю как...
Когда задача делается только однояко, то вопрос об элегантности обычно не поднимают.Про параметр знаю, сам так делал, но это как-то не элегантно...
-
Offline
- Posts: 98
- Joined: Thu Jul 03, 2008 7:23 pm
-
Offline
- Posts: 1949
- Joined: Sat Mar 06, 2010 7:40 pm
- Location: Poland
Method AkelPad.GetSelText()
I have a question.
What do the different arguments in the method AkelPad.GetSelText()?
What is the difference obtained strings?
What do the different arguments in the method AkelPad.GetSelText()?
What is the difference obtained strings?
GetSelText([nNewLine]);
Arguments
nNewLine (only for AkelPad 4.x.x)
1 //"\r" new line (default).
2 //"\n" new line.
3 //"\r\n" new line.
Return Value
String. Selected text.