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

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

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

Post by Maximus5 »

Latest post of the previous page:

Исправил. это был артефакт от старого патча (
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

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

Post by Skirda »

тестируем (на основе PluginCall8.diff)
здесь так же mmode(3,1) по умолчанию включен
We are the Borg. You will be assimilated.
So Say We All!
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

Чего-то еще подкрутить надо: игнорируется "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: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

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

Post by Skirda »

проверка MFLAGS_DISABLEOUTPUT (с последующими операциями с LockScr)?
We are the Borg. You will be assimilated.
So Say We All!
User avatar
John Doe
Бюрократ
Posts: 13855
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Планируется ли распространить действие mmode(3,x) на всё новое семейство функций?
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

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: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

Пробуем с одним плагином - 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: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

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

Post by Skirda »

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: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

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

Post by Max Rusov »

Может все-таки сделать 2 разных вызова, типа CallPlugin и CallPluginAsync? Это же принципиально разные вещи, как просто открыть окно и открыть модально. Они не должны управляться неявным флагом...
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

Эээ, ты о чем вообще? Ентот твой CallPluginAsync и есть Plugin.call
А флаг к асинхронности, насколько я понял, имеет только косвенное отношение, хм.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

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

Post by Max Rusov »

Все уже запутались окончательно. Сейчас 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: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

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

Post by Skirda »

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: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

Max Rusov wrote:а Plugin.call (когда он будет) - по любому не будет заменой CallPlugin, потому что он, как я понимаю, получает OPEN_PLUGINSMENU, а не OPEN_FROMMACRO, и не получает доп. параметры. Так?
так
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

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

Post by Skirda »

Вот здесь:

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: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

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

Post by Skirda »

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

Т.е. вариант:
$if(plugin.call(foo)) что-то там $end
не приемлем для mmode(3,1)...
We are the Borg. You will be assimilated.
So Say We All!
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

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

Post by Skirda »

Если предполагается, что для 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!
Locked

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