Дождаться закрытия всех модальных диалогов

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Дождаться закрытия всех модальных диалогов

Post by John Doe »

Latest post of the previous page:

ionic wrote: Tue 12 Mar, 2019 12:18 На данный момент решил проблему через "ж".
Напрасно.
ionic
Posts: 19
Joined: Mon 04 Mar, 2019 21:29
Been thanked: 1 time

Дождаться закрытия всех модальных диалогов

Post by ionic »

John Doe wrote: Tue 12 Mar, 2019 12:55Напрасно
Могу поинтересоваться ненапрасным решением?
Last edited by ionic on Tue 12 Mar, 2019 13:21, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Дождаться закрытия всех модальных диалогов

Post by John Doe »

ionic wrote: Tue 12 Mar, 2019 13:15 Могу поинтересоваться ненапрасным решением?
Ненапрасные вы по каким-то соображениям отбросили.
Ограничили себя в обработке событий.
И чем таймер (+mf.postmacro) не подошёл тоже не объяснили.
ionic
Posts: 19
Joined: Mon 04 Mar, 2019 21:29
Been thanked: 1 time

Дождаться закрытия всех модальных диалогов

Post by ionic »

John Doe wrote: Tue 12 Mar, 2019 13:53 Ненапрасные вы по каким-то соображениям отбросили.
Я изложил выше, почему я не мог с ними работать.

1. Таймер - нет возможности вызвать Keys, только PostMacro. Я посылаю, например, TAB и пытаюсь получить имя с панели. Если Keys возвращает управление после того, как клавиатурная команда сработала, то PostMacro - нет.

2. Нет возможности подписаться на события любого диалога, насколько я понимаю. GUID открытого модального диалога активного в данный момент панельного плагина я узнать не могу, скрипт работает с любым панельным плагином - отсюда такое.

Я могу описать задачу, чтобы стало ясно что я хочу:

хочу сравнить два файла, слева у меня стандартная панель файлов, справа файлы в NetBox - сравнить я их не могу, так как в NetBox виртуальная файловая система. Я пишу скрипт, чтобы копировать с любой панели выбранный файл в TEMP. Для этого я сначала перехожу в левую панель, гашу правую (чтобы копирование шло на хост моей машины), вызываю F5[ENTER], потом тоже самое делаю с правой панелью и лишь потом вызываю команду сравнения уже на локальных файлах.

Файл может быть большим - поэтому мне надо дождаться, когда диалог копирования закроется - для этого мне и нужно ожидание.

Если есть соображения как это можно сделать проще - я очень внимательно слушаю.

Только без троллинга, ок? Есть что написать по существу - буду рад.

Я в плагинописании FAR-а я только разбираюсь, все были когда-то новичками в чем-то, и не факт, что во всем остальном я не круче Вас ;)
Last edited by ionic on Tue 12 Mar, 2019 14:11, edited 2 times in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Дождаться закрытия всех модальных диалогов

Post by John Doe »

ionic wrote: Tue 12 Mar, 2019 14:07 1. Таймер - нет возможности вызвать Keys, только PostMacro. Я посылаю, например, TAB и пытаюсь получить имя с панели. Если Keys возвращает управление после того, как клавиатурная команда сработала, то PostMacro - нет.
Значит вся логика должна быть внутри postmacro.

ionic wrote: Tue 12 Mar, 2019 14:07 2. Нет возможности подписаться на события любого диалога, насколько я понимаю. GUID открытого модального диалога активного в данный момент панельного плагина я узнать не могу, скрипт работает с любым панельным плагином - отсюда такое.
Есть возможность, Event.
ionic wrote: Tue 12 Mar, 2019 14:07 гашу правую (чтобы копирование шло на хост моей машины)
Это мне представляется каким-то лишним действием.
Last edited by John Doe on Tue 12 Mar, 2019 16:13, edited 2 times in total.
ionic
Posts: 19
Joined: Mon 04 Mar, 2019 21:29
Been thanked: 1 time

Дождаться закрытия всех модальных диалогов

Post by ionic »

Благодарю за развернутый ответ.

По п.1 - если сделать postmacro с callback-ом, этот коллбэк получит потом в область видимости все то, что было до него (в скоупе вызова wait)?
Например переменную interval? Я конечно попробую сейчас это, но вопрос не будет ли коясков со скоупами при таком подходе.

Event как я понял, можно использовать только в макросах, а у меня просто скрипт. Или я ошибаюсь?

Можете попробовать с NetBox - если левая панель NetBox и правая панель NetBox, то при F5 после ENTER будет еще один диалог, если же панель погашена - будет стандартное поведение - т.е. начнется копирование файлов.

А мое решение с отдаванием кванта времени через Keys прямо очень-очень плохое?
Last edited by ionic on Tue 12 Mar, 2019 19:58, edited 2 times in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Дождаться закрытия всех модальных диалогов

Post by John Doe »

ionic wrote: Tue 12 Mar, 2019 19:50 Я конечно попробую сейчас это
И будет быстрее чем спросить.
ionic wrote: Tue 12 Mar, 2019 19:50 а у меня просто скрипт.
Скрипт можно сделать макросом.
ionic wrote: Tue 12 Mar, 2019 19:50 при F5 после ENTER будет еще один диалог
Не проще ли ещё раз Enter в этом случае?
ionic wrote: Tue 12 Mar, 2019 19:50 А мое решение с отдаванием кванта времени через Keys прямо очень-очень плохое?
Это была ваша характеристика, его работу я не проверял.
Подозреваю что будет напрасно нагружать процессор холостым циклом.
Post Reply

Return to “Нужна помощь”