Переименовать callplugin

Здесь обсуждается всё, что касается макросов.
Locked
Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: Переименовать callplugin

Post by Max Rusov » Wed 29 Feb, 2012 19:15

Latest post of the previous page:

John Doe wrote:Я всё клоню к тому, что по умолчанию асинхронность удобнее, поскольку банально нужна в 95%
Синхронность тоже нужна, но не по умолчанию.
Ну так самое очевидное решение - добавить новый вызов, который будет асинхронным. Все счастливы.

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

Re: Переименовать callplugin

Post by John Doe » Wed 29 Feb, 2012 19:21

Это мне в целях напоминания было представлено?
Нет, это же для всех писано. И эти все потенциально готовы переписать свои несколько макросов.
mmode(3,0) - добавит в конец
mmode(3,1) - исполнит...
Мы говорим о случае если callplugin станет асинхронным.
Ну сделает плагин MSSC_POST, в чём проблема?
В пользу доп.параметра (подразумеваю, что его хотя видеть первым) callplugin пока не услышал вменяемых доводов
Выше Max Rusov предлагал обойтись и без режима и без параметра.

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

Re: Переименовать callplugin

Post by John Doe » Wed 29 Feb, 2012 19:22

Max Rusov wrote:
John Doe wrote:Я всё клоню к тому, что по умолчанию асинхронность удобнее, поскольку банально нужна в 95%
Синхронность тоже нужна, но не по умолчанию.
Ну так самое очевидное решение - добавить новый вызов, который будет асинхронным. Все счастливы.
...и в 95% случаев используют новый. Возможно.

Но что если...

Плагин же сам прекрасно может определить где ему нужна синхронность, а где нет.
Может быть есть возможность дать об этом знать фару?

Плагин получает управление, смотрит что мы ему там передали, видит что синхронность тут не нужна, и командует макродвижку мол беги дальше.
Может это чистая фантастика и нереализуемо тут, но согласитесь: пользователь может и не знать, а плагин точно знает.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: Переименовать callplugin

Post by Max Rusov » Wed 29 Feb, 2012 19:30

John Doe wrote:пользователь может и не знать, а плагин точно знает.
Как это плагин может знать? Плагин открыл диалог, откуда ему знать оставшаяся часть макроса подразумевает какую-то автоматизацию внутри диалога (расставить флажки, etc.) или ждет завершения диалога, чтобы сделать что-то после?...

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Переименовать callplugin

Post by Skirda » Wed 29 Feb, 2012 19:30

Короче, хватит парится. F11 в руки и вперед - все станет ясно и прозрачно.

Callplugin создавался не для широкого круга, а по спецзаказу одним единственным человеком с весьма конкретным ТЗ - замена "F11 хоткей" с доп.параметром "пункт меню плагина" - т.е. цепочку "F11 c 1" превратить в callplugin(sysid,1).
Не моя вина, что кому то это понадобилось еще и спасибо тем, кто помог его уточнять (фактически в рамках все того же ТЗ).

Асинхронным callplugin никогда не будет по причинам описанным выше.
Сейчас задача проста - понять какие есть глюки в режиме mmode(3,1).
mmode(3,1) - это не ассинхронный режим (не параллельный, не многонитевый). Это обычная заморозка основной последовательность и разрешение повторно войти в макродвиг.
We are the Borg. You will be assimilated.
So Say We All!

User avatar
SUSim
Posts: 1531
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 9 times

Re: Переименовать callplugin

Post by SUSim » Wed 29 Feb, 2012 19:51

ИМХО проще всего (для фартим) сделать так:
- если calplugin был без параметров - это эквивалентно вызову через F11 и дальнейшие макродействия должны влиять на диалог(если плагин его выведет), а остальное оставить на совести плагино- и в первую очередь макросо- сочинителей...
- если calplugin был с параметрами, то плагин должен отработать без всяких дополнительных запросов (возвращая соответствующие коды ошибок), и это уже на совести плагинописателя - предусмотреть всевозможные коллизии...

Skirda
F11 и вперёд... неудобно из-за хоткеев/совпадения_имен/языковых_настроек в меню плагинов! ...зачем-то вы придумали гуиды не только для самих плагинов но и для пунктов меню (и это не лишнее!) ?
SimSU ··· ·· -- ··· ··-

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

Re: Переименовать callplugin

Post by John Doe » Wed 29 Feb, 2012 20:05

Skirda wrote:ТЗ - замена "F11 хоткей" с доп.параметром "пункт меню плагина" - т.е. цепочку "F11 c 1" превратить в callplugin(sysid,1).
Skirda wrote:Асинхронным callplugin никогда не будет по причинам описанным выше.
Не понял. "F11 c 1" выполняется асинхронно (не тормозит макропоследовательность ), а callplugin - синхронно. Где ж замена?

SUSim
Реальна замена F11 есть, читайте мантис, ссылки выше.


P.S.
Меня лично не интересует "асинхронность" в том смысле чтобы что-то выполнялось там параллельно, нет.
Просто хочется чтобы вызов плагинов был действительно похож на F11.

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Переименовать callplugin

Post by Skirda » Wed 29 Feb, 2012 20:29

"mmode(3,1) callplugin(GUID) блаблабла" оно?
We are the Borg. You will be assimilated.
So Say We All!

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

Re: Переименовать callplugin

Post by John Doe » Thu 01 Mar, 2012 09:22

Супер, предыдущие 4 страницы можно перечеркнуть. Всё ложь, включая это:

Оказывается mmode(3,1) решает именно проблему "синхронности". Т.е. можно написать так, и последовательность после callplugin выполнится сразу:

Code: Select all

mmode(3,1)  callplugin("C941E865-9C29-485C-99B3-0C710940F2D8")
ShiftRight ShiftRight ShiftDown ShiftDown ShiftLeft ShiftLeft ShiftUp ShiftUp ShiftRight Esc
Т.е. нет никакой нужды изощрённо передавать её в виде параметра, как в примере из changelog.

Ok, значит начинаем с начала.
  • Раз callplugin задумывается как замена F11, то правильней будет иметь mmode(3,1) включённым по-умолчанию, именно это соответствует поведению при вызове через F11.

    Code: Select all

    macro:post ShiftF4  CtrlY Enter  F11 Menu.Select("Draw lines") Enter ShiftRight ShiftRight ShiftDown ShiftDown ShiftLeft ShiftLeft ShiftUp ShiftUp ShiftRight Esc
  • Вместо mmode(3,) проще и понятнее просто ввести отдельную функцию:
    Т.е. будут 2 отдельные:
    • Plugin.Call()
      Plugin.CallSynchro()
    (Названия любые, я про сам принцип сейчас)

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

Re: Переименовать callplugin

Post by John Doe » Thu 01 Mar, 2012 09:30

Теперь про глюки.
На примере плагина Case conversion:

Code: Select all

macro:post mmode(3,1) callplugin("ADAC3050-56E8-45FE-9CB1-A737623CC4A6")
После однократного запуска этого отказывают все макросы.

Вероятно проблема в том, что при завершении макроса плагин всё ещё активен.
Стоит добавить в конце Esc, и проблема пропадает:

Code: Select all

macro:post mmode(3,1) callplugin("ADAC3050-56E8-45FE-9CB1-A737623CC4A6") Esc

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Переименовать callplugin

Post by Skirda » Thu 01 Mar, 2012 10:26

John Doe wrote:Теперь про глюки.
На примере плагина Case conversion:

Code: Select all

macro:post mmode(3,1) callplugin("ADAC3050-56E8-45FE-9CB1-A737623CC4A6")
После однократного запуска этого отказывают все макросы.
Естественно - ты еще в OpenW.
Здесь, собственно, два вопроса/непонятки:
1. плагин ожидает, что его вызовут только из редактора (править плагин на предмет "где я"?, а сколько таких плагинов?)
2. ФАР должен угадать, что вызывает OpenW из правильного места...
We are the Borg. You will be assimilated.
So Say We All!

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

Re: Переименовать callplugin

Post by John Doe » Thu 01 Mar, 2012 10:32

Конкретно этот плагин работает и в редакторе, и в панелях. И макросы отваливаются независимо от места вызова.
а сколько таких плагинов?
А что у нас апи разве не каждую неделю ломается?
Я считаю что это необходимо сделать, и об этом же говорилось при обсуждении "запуска плагинов через префикс отовсюду"

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Переименовать callplugin

Post by Skirda » Thu 01 Mar, 2012 10:34

...брешу.
есть бага, пока не понял... ищу
We are the Borg. You will be assimilated.
So Say We All!

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 3 times

Re: Переименовать callplugin

Post by Skirda » Thu 01 Mar, 2012 10:43

починили - в районе 2506 будет.
We are the Borg. You will be assimilated.
So Say We All!

Denis
Posts: 1419
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 6 times
Been thanked: 2 times

Re: Переименовать callplugin

Post by Denis » Thu 01 Mar, 2012 10:46

У меня после

Code: Select all

macro:post mmode(3,1) callplugin("ADAC3050-56E8-45FE-9CB1-A737623CC4A6")
и потом ESC - вообще trap получился.

upd.
AltHistory упал

User avatar
zg
zero-gravity
Posts: 5623
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 104 times
Contact:

Re: Переименовать callplugin

Post by zg » Thu 01 Mar, 2012 11:03

John Doe wrote:А что у нас апи разве не каждую неделю ломается?
ломать можно по разному. можно так сломать, что за 3 года потом не собрать.
вообще есть 1903. там на первый взгляд всё ок в плане функциональности. единственно, что PluginManager::CallPluginItem является почти полным копипастом PluginManager::CommandsMenu. поэтому да, пока не в фаре.

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

Re: Переименовать callplugin

Post by John Doe » Thu 01 Mar, 2012 11:16

zg wrote:ломать можно по разному. можно так сломать, что за 3 года потом не собрать.
К чему вы клоните?
К тому что callplugin надо выкинуть?
Потому что если нет, то надо сделать его стабильным, в частности решить раз и навсегда проблему с вызовом плагина в момент когда он этого не ожидает.

Locked

Return to “Обсуждение макросов”