Latest post of the previous page:
Исправил. это был артефакт от старого патча (Переименовать callplugin
Re: Переименовать callplugin
Чего-то еще подкрутить надо: игнорируется "DisableOutput"
Пример:
Видно, как мелькает диалог
А если так:
то не мелькает
Пример:
Code: Select all
macro:post Plugin.Call("ADAC3050-56E8-45FE-9CB1-A737623CC4A6") Esc
А если так:
Code: Select all
macro:post F11 Enter Esc
Re: Переименовать callplugin
проверка MFLAGS_DISABLEOUTPUT (с последующими операциями с LockScr)?
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: Переименовать callplugin
Планируется ли распространить действие mmode(3,x) на всё новое семейство функций?
Re: Переименовать callplugin
Не, там что-то не то...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() еще не вызывался...
Re: Переименовать callplugin
Пробуем с одним плагином - 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 без отступа идет, это так и задумывалось? Некрасиво как-то...
Вызовы 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 без отступа идет, это так и задумывалось? Некрасиво как-то...
Re: Переименовать callplugin
В принципе его (этот режим) можно вынести на уровень флагов (как DisableOutput). А mmode(3) - для управления (по аналогии с mmode(1))Maximus5 wrote:Как mmode(3,1) по умолчнию включать? Попробовал заюзать "GetCurrentCallPluginMode", но как-то неинтересно в каждом макросе "mmode(3,1)" писать.
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Переименовать callplugin
Может все-таки сделать 2 разных вызова, типа CallPlugin и CallPluginAsync? Это же принципиально разные вещи, как просто открыть окно и открыть модально. Они не должны управляться неявным флагом...
Re: Переименовать callplugin
Эээ, ты о чем вообще? Ентот твой CallPluginAsync и есть Plugin.call
А флаг к асинхронности, насколько я понял, имеет только косвенное отношение, хм.
А флаг к асинхронности, насколько я понял, имеет только косвенное отношение, хм.
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Переименовать callplugin
Все уже запутались окончательно. Сейчас mmode именно включает асинхронность. Сравни:
И
а Plugin.call (когда он будет) - по любому не будет заменой CallPlugin, потому что он, как я понимаю, получает OPEN_PLUGINSMENU, а не OPEN_FROMMACRO, и не получает доп. параметры. Так?
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")
Re: Переименовать callplugin
Когда ты нажал Enter (макрос), тоMaximus5 wrote:Если, меню Outliner закрывать тоже макросом (хотя Enter=Enter), то буфер MR оказывается разрушаен при возврате из colorer::OpenW. И проверка "if (Work.Executing == MACROMODE_NOMACRO)" не спасает.
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!
So Say We All!
Re: Переименовать callplugin
такMax Rusov wrote:а Plugin.call (когда он будет) - по любому не будет заменой CallPlugin, потому что он, как я понимаю, получает OPEN_PLUGINSMENU, а не OPEN_FROMMACRO, и не получает доп. параметры. Так?
Re: Переименовать callplugin
Вот здесь:
"VMStack.Push(Ret);" невовремя - отсюда рушится стек.
Его нужно ставить в "else" после "if (Work.Executing == MACROMODE_NOMACRO)".
И то... не факт, что нужен "успех/не успех" для случая mmode(3,1), т.к. в стек ляжет хрень, не относящаяся к текущему времени исполнения (мы уже дааалеко ушли от plugin.call)...
Code: Select all
// Чтобы вернуть результат "выполнения" нужно проверить наличие плагина/пункта
Ret=(__int64)CtrlObject->Plugins->CallPluginItem(guid,&Data);
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!
So Say We All!
Re: Переименовать callplugin
Кстати, "не успех" все же нужен.
А "успех" - никогда не будет возвращаться (помещаться в стек данных) в асссинннхххронном режиме (по причине того, что... где мы его будем проверять? )
Т.е. вариант:
$if(plugin.call(foo)) что-то там $end
не приемлем для mmode(3,1)...
А "успех" - никогда не будет возвращаться (помещаться в стек данных) в асссинннхххронном режиме (по причине того, что... где мы его будем проверять? )
Т.е. вариант:
$if(plugin.call(foo)) что-то там $end
не приемлем для mmode(3,1)...
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
Re: Переименовать callplugin
Если предполагается, что для MCODE_F_PLUGIN_CALL, MCODE_F_PLUGIN_CONFIG и MCODE_F_PLUGIN_PREFIX в плагин не будет передаваться FROMMACRO, то
1. Push/Pos state ненужны.
2. не должно быть влияния от mmode(3)
UPD: Концовка получается
1. Push/Pos state ненужны.
2. не должно быть влияния от mmode(3)
UPD: Концовка получается
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!