Пара аварийных вопросов по режиму проигрывания макроса.

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
User avatar
NightRoman
Posts: 6197
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 34 times
Been thanked: 62 times
Contact:

Пара аварийных вопросов по режиму проигрывания макроса.

Post by NightRoman »

1) Как плагину прервать проигрываемый макрос? Например, код плуга видит фатальную ситуацию и знает, что сейчас макрос играет и что-нибудь может не так сделать.

2) Как плагину приостановить проигрываемый макрос? Например, та же ситуация что и в 1), но продолжать или нет - зависит от юзера. Плуг бы приостановил макрос, задал вопрос и прервал бы его (как в 1) или возобновил бы выполнение после закрытия диалога об ошибке.

Такое вообще возможно? Фар 2.
Last edited by NightRoman on Mon 26 Oct, 2009 15:16, edited 1 time in total.
User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Пара вопросов по режиму проигрывания макроса.

Post by Skirda »

NightRoman wrote:Такое вообще возможно? Фар 2.
может и можно, про это никто не задумывался :-)
We are the Borg. You will be assimilated.
So Say We All!
User avatar
NightRoman
Posts: 6197
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 34 times
Been thanked: 62 times
Contact:

Re: Пара вопросов по режиму проигрывания макроса.

Post by NightRoman »

Ну тогда это философский вопрос на будущее. Как правильно и безопасно плагин должен сообщать об ошибке диалогом, с учетом того, что щас может играть макрос (а такая ситуация совсем не редкость). Если неожиданный для пользователя диалог об ошибке (о возможности которого знает может только плагин до поры до времени) выскочит в середине макроса, то последствия вообще не очень предсказуемы.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Пара вопросов по режиму проигрывания макроса.

Post by DrKnS »

NightRoman wrote:прервать
Послать в консоль CtrlBreak.
приостановить
Никак.
User avatar
NightRoman
Posts: 6197
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 34 times
Been thanked: 62 times
Contact:

Re: Пара вопросов по режиму проигрывания макроса.

Post by NightRoman »

DrKnS wrote:Послать в консоль CtrlBreak.
Уже неплохо.. просвети, пожалуйста, что конкретно это значит.
User avatar
NightRoman
Posts: 6197
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 34 times
Been thanked: 62 times
Contact:

Re: Пара вопросов по режиму проигрывания макроса.

Post by NightRoman »

В принципе, прервать \ продолжить можно подхитрить гуйным модальным диалогом (но не пробовал еще). Но само-собой, гуй - это на самый уж крайний случай.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Пара вопросов по режиму проигрывания макроса.

Post by DrKnS »

NightRoman wrote:просвети, пожалуйста, что конкретно это значит.
changelog wrote:svs 05.08.2008 14:38:06 +0300 - build 542

1. Mantis#0000581: Добавить возможность прервать выполнение макроса
CtrlBreak прерывает выполнение макроса. Назначать макросы на CtrlBreak тоже можно
User avatar
NightRoman
Posts: 6197
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 34 times
Been thanked: 62 times
Contact:

Re: Пара аварийных вопросов по режиму проигрывания макроса.

Post by NightRoman »

DrKnS
Это когда юзер нажмет. А программно? Есть такой АПИ у консоли? Хорошо, поковыряю.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Пара аварийных вопросов по режиму проигрывания макроса.

Post by DrKnS »

NightRoman wrote:А программно? Есть такой АПИ у консоли?
Есть.
User avatar
NightRoman
Posts: 6197
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 34 times
Been thanked: 62 times
Contact:

Re: Пара аварийных вопросов по режиму проигрывания макроса.

Post by NightRoman »

Все получилось и работает, как надо и безопасно: и 1), и 2). Схема такая, может, кому пригодится:
1) Как плагину прервать проигрываемый макрос? Например, код плуга видит фатальную ситуацию и знает, что сейчас макрос играет и что-нибудь может не так сделать.
-- эмулируем CtrlBreak, тем самым прерываем текущий макрос
-- вызываем обычный диалог об ошибке, это безопасно, макрос уже не работает
2) Как плагину приостановить проигрываемый макрос? Например, та же ситуация что и в 1), но продолжать или нет - зависит от юзера. Плуг бы приостановил макрос, задал вопрос и прервал бы его (как в 1) или возобновил бы выполнение после закрытия диалога об ошибке.
-- запускаем гуйный мессадж бокс с вопросом (это работает как приостановка макроса, ибо Фар про гуйный диалог не знает)
-- юзер сказал "стоп", тогда эмулируем CtrlBreak, тем самым прерываем текущий макрос
-- юзер сказал "фиг с ним", ничего не делаем специального, макрос сам продолжится

Оба решения какие-то хакерские, особенно второе. Но иногда лучше перебдеть. Если в Фаре будут АПИ альтернативы, с удовольствием выкину эти обходные пути. Но пока буду применять в определенных местах..
Post Reply

Return to “Разработка плагинов”