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

Здесь обсуждается всё, что касается макросов.
Locked
Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

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

Post by Maximus5 » Wed 07 Mar, 2012 11:00

Latest post of the previous page:

Исправил. это был артефакт от старого патча (

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

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

Post by Skirda » Wed 07 Mar, 2012 11:57

тестируем (на основе PluginCall8.diff)
здесь так же mmode(3,1) по умолчанию включен
We are the Borg. You will be assimilated.
So Say We All!

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

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

Post by Maximus5 » Wed 07 Mar, 2012 13:55

Чего-то еще подкрутить надо: игнорируется "DisableOutput"
Пример:

Code: Select all

macro:post Plugin.Call("ADAC3050-56E8-45FE-9CB1-A737623CC4A6") Esc
Видно, как мелькает диалог
А если так:

Code: Select all

macro:post F11 Enter Esc
то не мелькает

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

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

Post by Skirda » Wed 07 Mar, 2012 16:50

проверка MFLAGS_DISABLEOUTPUT (с последующими операциями с LockScr)?
We are the Borg. You will be assimilated.
So Say We All!

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

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

Post by John Doe » Wed 07 Mar, 2012 17:27

Планируется ли распространить действие mmode(3,x) на всё новое семейство функций?

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

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

Post by Maximus5 » Sun 11 Mar, 2012 14:11

Skirda wrote:проверка MFLAGS_DISABLEOUTPUT (с последующими операциями с LockScr)?
Не, там что-то не то...
LockScr создается, как и для остальных в GetKey, но при выполнении макроса
plugin.Call("D2F36B62-A470-418D-83A3-ED7A3710E5B5","45453CAC-499D-4B37-82B8-0A77F7BD087C") 5
на экран пролезает меню плагина Colorer (которое должно было "закрыться" поcле 5)
Хотя в отладчике видно, что LockScreen::~LockScreen() еще не вызывался...

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

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

Post by Maximus5 » Sun 11 Mar, 2012 15:16

Пробуем с одним плагином - Colorer.

Вызовы PushState(true) и PopState() вроде как лишние? Если звать - то получается вот такой . Соответственно, Lock снимается.
PushState/PopState пока оставил, до выяснения...

Как mmode(3,1) по умолчнию включать? Попробовал заюзать "GetCurrentCallPluginMode", но как-то неинтересно в каждом макросе "mmode(3,1)" писать.

Если, меню Outliner закрывать тоже макросом (хотя Enter=Enter), то буфер MR оказывается разрушаен при возврате из colorer::OpenW. И проверка "if (Work.Executing == MACROMODE_NOMACRO)" не спасает.

Кроме того, если после этого еще раз нажать AltShiftF7, в в текст вставляется "5" вместо отображения Outliner'а.

Кстати, то что [/text] после CDATA без отступа идет, это так и задумывалось? Некрасиво как-то...

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

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

Post by Skirda » Mon 12 Mar, 2012 07:02

Maximus5 wrote:Как mmode(3,1) по умолчнию включать? Попробовал заюзать "GetCurrentCallPluginMode", но как-то неинтересно в каждом макросе "mmode(3,1)" писать.
В принципе его (этот режим) можно вынести на уровень флагов (как DisableOutput). А mmode(3) - для управления (по аналогии с mmode(1))
We are the Borg. You will be assimilated.
So Say We All!

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 » Mon 12 Mar, 2012 07:18

Может все-таки сделать 2 разных вызова, типа CallPlugin и CallPluginAsync? Это же принципиально разные вещи, как просто открыть окно и открыть модально. Они не должны управляться неявным флагом...

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

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

Post by Maximus5 » Mon 12 Mar, 2012 07:59

Эээ, ты о чем вообще? Ентот твой CallPluginAsync и есть Plugin.call
А флаг к асинхронности, насколько я понял, имеет только косвенное отношение, хм.

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 » Mon 12 Mar, 2012 08:14

Все уже запутались окончательно. Сейчас mmode именно включает асинхронность. Сравни:

Code: Select all

macro:post mmode(3,0) CallPlugin("ADAC3050-56E8-45FE-9CB1-A737623CC4A6") MsgBox("Hi")
И

Code: Select all

macro:post mmode(3,1) CallPlugin("ADAC3050-56E8-45FE-9CB1-A737623CC4A6") MsgBox("Hi")
а Plugin.call (когда он будет) - по любому не будет заменой CallPlugin, потому что он, как я понимаю, получает OPEN_PLUGINSMENU, а не OPEN_FROMMACRO, и не получает доп. параметры. Так?

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

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

Post by Skirda » Mon 12 Mar, 2012 08:22

Maximus5 wrote:Если, меню Outliner закрывать тоже макросом (хотя Enter=Enter), то буфер MR оказывается разрушаен при возврате из colorer::OpenW. И проверка "if (Work.Executing == MACROMODE_NOMACRO)" не спасает.
Когда ты нажал Enter (макрос), то
1. мы еще в плагине (т.е. еще не вышли из "второго" "Ret=(__int64)CtrlObject->Plugins->CallPluginItem(guid,&Data);")
2. Естественно после выхода из CallPluginItem() Work.Executing = 2, а не 0, т.к. это уже другой макрос (Enter=Enter) "доисполняется"...
We are the Borg. You will be assimilated.
So Say We All!

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

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

Post by Maximus5 » Mon 12 Mar, 2012 08:24

Max Rusov wrote:а Plugin.call (когда он будет) - по любому не будет заменой CallPlugin, потому что он, как я понимаю, получает OPEN_PLUGINSMENU, а не OPEN_FROMMACRO, и не получает доп. параметры. Так?
так

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

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

Post by Skirda » Mon 12 Mar, 2012 08:36

Вот здесь:

Code: Select all

// Чтобы вернуть результат "выполнения" нужно проверить наличие плагина/пункта
Ret=(__int64)CtrlObject->Plugins->CallPluginItem(guid,&Data);
VMStack.Push(Ret);
"VMStack.Push(Ret);" невовремя - отсюда рушится стек.
Его нужно ставить в "else" после "if (Work.Executing == MACROMODE_NOMACRO)".
И то... не факт, что нужен "успех/не успех" для случая mmode(3,1), т.к. в стек ляжет хрень, не относящаяся к текущему времени исполнения (мы уже дааалеко ушли от plugin.call)...
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 » Mon 12 Mar, 2012 09:03

Кстати, "не успех" все же нужен.
А "успех" - никогда не будет возвращаться (помещаться в стек данных) в асссинннхххронном режиме (по причине того, что... где мы его будем проверять? :-))

Т.е. вариант:
$if(plugin.call(foo)) что-то там $end
не приемлем для mmode(3,1)...
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 » Mon 12 Mar, 2012 09:36

Если предполагается, что для MCODE_F_PLUGIN_CALL, MCODE_F_PLUGIN_CONFIG и MCODE_F_PLUGIN_PREFIX в плагин не будет передаваться FROMMACRO, то
1. Push/Pos state ненужны.
2. не должно быть влияния от mmode(3)

UPD: Концовка получается
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 » Mon 12 Mar, 2012 09:46

Тестим
2Maximus: патч внутри архива - синхронизируйся со своими сорцами
We are the Borg. You will be assimilated.
So Say We All!

Locked

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