Page 3 of 6
LNK-file viewer
Posted: Sat 20 Dec, 2014 23:05
by stasf
Latest post of the previous page:
Да, спасибо!
Искал где угодно, только не там где надо
LNK-file viewer
Posted: Sat 20 Dec, 2014 23:15
by stasf
А как на стороне макроса возвращаемые значения принимаются?
LNK-file viewer
Posted: Sat 20 Dec, 2014 23:18
by Shmuel
stasf wrote: А как на стороне макроса возвращаемые значения принимаются?
Предположим, что плагин возвращает 3 значения. Тогда
a, b, c = Plugin.Call(guid, ...)
.
LNK-file viewer
Posted: Sat 20 Dec, 2014 23:20
by stasf
Shmuel wrote:Предположим, что плагин возвращает 3 значения. Тогда a, b, c = Plugin.Call(guid, ...)
.
Спасибо ОГРОМНОЕ!!!
LNK-file viewer
Posted: Sun 21 Dec, 2014 15:24
by stasf
SUSim wrote:Если Вы реализуете возможность отдавать в макрос, хотя бы, рабочую папку и объект запуска, то многое другое уже можно будет развить макросами!!!
Благодаря
Shmuel обмен данными с макросами наконец освоен
На стороне LUA предлагаю следующий интерфейс
Code: Select all
local LnkFlags {, var} = Plugin.SyncCall ( LnkViewGUID, LnkFileName {, LnkDataField} )
Если задано только LnkFileName, плагин в случае успешного распознания LNK-формата вернет поле флагов из заголовка LNK-файла,
а в случае неверного формата файла - 0. Таким образом, для проверки успешности вызова плагина в макросе достаточно будет
проверить LnkFlags.
Не знаю, нужно ли (и хорошо ли) это, но если в качестве LnkFileName передать пустую строку, плагин может взять файл из-под курсора в активной панели.
Стандартно LnkDataField предлагаю задавать в виде "path" соответствующего поля данных.
Наряду с этим можно сделать несколько специальных имен полей.
Например: "@target", "@workdir" и т.д.
Что скажете?
LNK-file viewer
Posted: Mon 22 Dec, 2014 18:56
by SUSim
Зачем усложнять:
- не удалось распознать - ничего не возвращать.
- распознал - пусть таблицу возвращает с соответствующими полями, вот таблицу можно = НАДО обсудить !!!
- насчёт отсутствия параметров при вызове - ИМХО лучше макросом разруливать (ну для удобства пусть текущий фай пытается разобрать, хотя я не уверен)!
Posted: Mon 22 Dec, 2014 19:01
by John Doe
Разве плагин может вернуть таблицу
LNK-file viewer
Posted: Mon 22 Dec, 2014 19:08
by stasf
John Doe wrote:Разве плагин может вернуть таблицу
Ну, впрямую, похоже нет.
Но можно 2 или более ARRAYS вернуть - вот Вам и таблица...
Только мне это как-то не очень нравится - теоретически надо будет в макросе проверять равенство Count в каждом ARRAY
LNK-file viewer
Posted: Mon 22 Dec, 2014 19:08
by SUSim
Блин - не может, тогда приятно было бы, если возвращался набор строк, но их состав и порядок надо обсудить:
мне бы было приятно если бы возвращалось:
- путь до цели
- цель
- параметры
...
- строка спец формата со всем, что удалось разобрать...
LNK-file viewer
Posted: Mon 22 Dec, 2014 19:15
by stasf
SUSim wrote:
- не удалось распознать - ничего не возвращать.
Я это и имел в виду - если плагин возвращает 0, макрос получает false.
Что, собственно, и требуется в данном случае.
SUSim wrote:
- распознал - пусть таблицу возвращает с соответствующими полями, вот таблицу можно = НАДО обсудить !!!
Готов выслушать предложения, с учетом того, что плагин только ARRAY может возвращать.
SUSim wrote:
- насчёт отсутствия параметров при вызове - ИМХО лучше макросом разруливать (ну для удобства пусть текущий фай пытается разобрать, хотя я не уверен)!
Вот насчет этого у меня, как раз, есть конкретное предложение:
будет открывать панель LNK-viewer'а на текущем файле в активной панели (если он подходящего формата).
LNK-file viewer
Posted: Mon 22 Dec, 2014 19:28
by stasf
SUSim wrote:Блин - не может, тогда приятно было бы, если возвращался набор строк, но их состав и порядок надо обсудить:
мне бы было приятно если бы возвращалось:
- путь до цели
- цель
- параметры
...
- строка спец формата со всем, что удалось разобрать...
Ну, можно, например, вот так:
Code: Select all
local Flags, TargetPath, TargetParams = Plugin.SyncCall(LnkViewGUID, LnkFileName, "@TargetPath", "@TargetParams")
Для получения общего списка извлекаемых полей данных:
Code: Select all
local Flags, LnkFields = Plugin.SyncCall(LnkViewGUID, LnkFileName, "@AllFields")
А для получения конкретного поля данных, например, так:
Code: Select all
local Flags, TargetPath = Plugin.SyncCall(LnkViewGUID, LnkFileName, "/LinkInfo/Lnk_LocalPath")
LNK-file viewer
Posted: Mon 22 Dec, 2014 19:35
by stasf
Кстати, вместо
stasf wrote: local Flags, LnkFields = Plugin.SyncCall(LnkViewGUID, LnkFileName, "@AllFields")
можно сделать:
Code: Select all
local Flags, LnkFields = Plugin.SyncCall(LnkViewGUID, LnkFileName, "/")
Это мне нравится гораздо больше, так как можно будет делать вещи, типа:
Code: Select all
local Flags, LinkInfoFields = Plugin.SyncCall(LnkViewGUID, LnkFileName, "/LinkInfo/")
и получать список полей заданной виртуальной "папки"!
LNK-file viewer
Posted: Mon 22 Dec, 2014 19:45
by stasf
Хотя, конечно, с точки зрения реализации мне было бы гораздо проще выкинуть, скажем 4 ARRAYS - имена полей (в виде виртуального path),
длины полей, смещения полей внутри файла, значения полей...
А дальше - пусть макрос делает с этим что хочет (хоть LNK-файл редактирует
)
Posted: Mon 22 Dec, 2014 19:54
by HaRT
John Doe wrote:Разве плагин может вернуть таблицу
Если правда, что плагин может вернуть только массив, то вроде ж это
может быть массив таблиц (см. третий кусок кода в вопросе и пояснение перед ним).
LNK-file viewer
Posted: Mon 22 Dec, 2014 20:10
by stasf
HaRT wrote:John Doe wrote:Разве плагин может вернуть таблицу
Если правда, что плагин может вернуть только массив, то вроде ж это
может быть массив таблиц (см. третий кусок кода в вопросе и пояснение перед ним).
Тут основной вопрос - это удобство пользования результатами работы плагина в макросе.
Нам бы консультацию крутого эксперта по макросам получить...
Может
shmuel что-нибудь посоветует?
LNK-file viewer
Posted: Mon 22 Dec, 2014 20:21
by Shmuel
stasf wrote: Тут основной вопрос - это удобство пользования результатами работы плагина в макросе.
Как вы уже отметили выше, передачу таблицы можно реализовать передачей двух массивов: ключей и значений. А вот нужно ли это делать - другой вопрос.
Я бы мог добавить поддержку передачи таблиц, просто до сих пор такой потребности не возникало. Мне кажется, можно было бы обойтись и без таблицы, просто фиксированной последовательностью передаваемых значений. Если кто сильно хочет передачу таблиц - виш на мантис, но быстрой реакции не обещаю, есть другие дела.