LnkView — LNK-file Viewer

Здесь можно обсудить ваш любимый плагин.
stasf
Posts: 109
Joined: Wed 10 Dec, 2014 22:53
Has thanked: 2 times
Been thanked: 1 time

LNK-file viewer

Postby stasf » Sat 20 Dec, 2014 23:05

Latest post of the previous page:

Shmuel wrote:http://api.farmanager.com/ru/exported_functions/openw.html


Да, спасибо!
Искал где угодно, только не там где надо :-)

stasf
Posts: 109
Joined: Wed 10 Dec, 2014 22:53
Has thanked: 2 times
Been thanked: 1 time

LNK-file viewer

Postby stasf » Sat 20 Dec, 2014 23:15

Shmuel wrote:http://api.farmanager.com/ru/exported_functions/openw.html


А как на стороне макроса возвращаемые значения принимаются?

Shmuel
Posts: 4953
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 124 times

LNK-file viewer

Postby Shmuel » Sat 20 Dec, 2014 23:18

stasf wrote:Source of the post А как на стороне макроса возвращаемые значения принимаются?
Предположим, что плагин возвращает 3 значения. Тогда a, b, c = Plugin.Call(guid, ...).

stasf
Posts: 109
Joined: Wed 10 Dec, 2014 22:53
Has thanked: 2 times
Been thanked: 1 time

LNK-file viewer

Postby stasf » Sat 20 Dec, 2014 23:20

Shmuel wrote:Предположим, что плагин возвращает 3 значения. Тогда a, b, c = Plugin.Call(guid, ...).


Спасибо ОГРОМНОЕ!!!

stasf
Posts: 109
Joined: Wed 10 Dec, 2014 22:53
Has thanked: 2 times
Been thanked: 1 time

LNK-file viewer

Postby stasf » Sun 21 Dec, 2014 15:24

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" и т.д.

Что скажете?

User avatar
SUSim
Posts: 1471
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 4 times
Been thanked: 3 times

LNK-file viewer

Postby SUSim » Mon 22 Dec, 2014 18:56

Зачем усложнять:
- не удалось распознать - ничего не возвращать.
- распознал - пусть таблицу возвращает с соответствующими полями, вот таблицу можно = НАДО обсудить !!!
- насчёт отсутствия параметров при вызове - ИМХО лучше макросом разруливать (ну для удобства пусть текущий фай пытается разобрать, хотя я не уверен)!
SimSU ··· ·· -- ··· ··-

User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

Postby John Doe » Mon 22 Dec, 2014 19:01

Разве плагин может вернуть таблицу

stasf
Posts: 109
Joined: Wed 10 Dec, 2014 22:53
Has thanked: 2 times
Been thanked: 1 time

LNK-file viewer

Postby stasf » Mon 22 Dec, 2014 19:08

John Doe wrote:Разве плагин может вернуть таблицу


Ну, впрямую, похоже нет.
Но можно 2 или более ARRAYS вернуть - вот Вам и таблица...
Только мне это как-то не очень нравится - теоретически надо будет в макросе проверять равенство Count в каждом ARRAY :-(

User avatar
SUSim
Posts: 1471
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 4 times
Been thanked: 3 times

LNK-file viewer

Postby SUSim » Mon 22 Dec, 2014 19:08

Блин - не может, тогда приятно было бы, если возвращался набор строк, но их состав и порядок надо обсудить:
мне бы было приятно если бы возвращалось:
- путь до цели
- цель
- параметры
...
- строка спец формата со всем, что удалось разобрать...
SimSU ··· ·· -- ··· ··-

stasf
Posts: 109
Joined: Wed 10 Dec, 2014 22:53
Has thanked: 2 times
Been thanked: 1 time

LNK-file viewer

Postby stasf » Mon 22 Dec, 2014 19:15

SUSim wrote: - не удалось распознать - ничего не возвращать.

Я это и имел в виду - если плагин возвращает 0, макрос получает false.
Что, собственно, и требуется в данном случае.

SUSim wrote: - распознал - пусть таблицу возвращает с соответствующими полями, вот таблицу можно = НАДО обсудить !!!

Готов выслушать предложения, с учетом того, что плагин только ARRAY может возвращать.

SUSim wrote: - насчёт отсутствия параметров при вызове - ИМХО лучше макросом разруливать (ну для удобства пусть текущий фай пытается разобрать, хотя я не уверен)!


Вот насчет этого у меня, как раз, есть конкретное предложение:

Code: Select all

Plugin.Call(LnkViewGUID)

будет открывать панель LNK-viewer'а на текущем файле в активной панели (если он подходящего формата).

stasf
Posts: 109
Joined: Wed 10 Dec, 2014 22:53
Has thanked: 2 times
Been thanked: 1 time

LNK-file viewer

Postby stasf » Mon 22 Dec, 2014 19:28

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

stasf
Posts: 109
Joined: Wed 10 Dec, 2014 22:53
Has thanked: 2 times
Been thanked: 1 time

LNK-file viewer

Postby stasf » Mon 22 Dec, 2014 19:35

Кстати, вместо
stasf wrote:Source of the post 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/")

и получать список полей заданной виртуальной "папки"!

stasf
Posts: 109
Joined: Wed 10 Dec, 2014 22:53
Has thanked: 2 times
Been thanked: 1 time

LNK-file viewer

Postby stasf » Mon 22 Dec, 2014 19:45

Хотя, конечно, с точки зрения реализации мне было бы гораздо проще выкинуть, скажем 4 ARRAYS - имена полей (в виде виртуального path),
длины полей, смещения полей внутри файла, значения полей...

А дальше - пусть макрос делает с этим что хочет (хоть LNK-файл редактирует :-))

User avatar
HaRT
Moderator
Posts: 7909
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 64 times
Been thanked: 94 times

Postby HaRT » Mon 22 Dec, 2014 19:54

John Doe wrote:Разве плагин может вернуть таблицу
Если правда, что плагин может вернуть только массив, то вроде ж это может быть массив таблиц (см. третий кусок кода в вопросе и пояснение перед ним).
Фар есть инструмент, а не нянька. © 2009 DrKnS

stasf
Posts: 109
Joined: Wed 10 Dec, 2014 22:53
Has thanked: 2 times
Been thanked: 1 time

LNK-file viewer

Postby stasf » Mon 22 Dec, 2014 20:10

HaRT wrote:
John Doe wrote:Разве плагин может вернуть таблицу
Если правда, что плагин может вернуть только массив, то вроде ж это может быть массив таблиц (см. третий кусок кода в вопросе и пояснение перед ним).


Тут основной вопрос - это удобство пользования результатами работы плагина в макросе.
Нам бы консультацию крутого эксперта по макросам получить...
Может shmuel что-нибудь посоветует?

Shmuel
Posts: 4953
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 124 times

LNK-file viewer

Postby Shmuel » Mon 22 Dec, 2014 20:21

stasf wrote:Source of the post Тут основной вопрос - это удобство пользования результатами работы плагина в макросе.
Как вы уже отметили выше, передачу таблицы можно реализовать передачей двух массивов: ключей и значений. А вот нужно ли это делать - другой вопрос.

Я бы мог добавить поддержку передачи таблиц, просто до сих пор такой потребности не возникало. Мне кажется, можно было бы обойтись и без таблицы, просто фиксированной последовательностью передаваемых значений. Если кто сильно хочет передачу таблиц - виш на мантис, но быстрой реакции не обещаю, есть другие дела.

User avatar
HaRT
Moderator
Posts: 7909
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 64 times
Been thanked: 94 times

LNK-file viewer

Postby HaRT » Mon 22 Dec, 2014 20:25

Shmuel wrote:Source of the post Я бы мог добавить поддержку передачи таблиц, просто до сих пор такой потребности не возникало.
Правильно ли я понимаю, что и массив таблиц сейчас из плагина не передать?
Фар есть инструмент, а не нянька. © 2009 DrKnS


Return to “Обсуждение плагинов”

Who is online

Users browsing this forum: No registered users and 8 guests