Пара аварийных вопросов по режиму проигрывания макроса.
- NightRoman
- Posts: 6197
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 34 times
- Been thanked: 62 times
- Contact:
Пара аварийных вопросов по режиму проигрывания макроса.
1) Как плагину прервать проигрываемый макрос? Например, код плуга видит фатальную ситуацию и знает, что сейчас макрос играет и что-нибудь может не так сделать.
2) Как плагину приостановить проигрываемый макрос? Например, та же ситуация что и в 1), но продолжать или нет - зависит от юзера. Плуг бы приостановил макрос, задал вопрос и прервал бы его (как в 1) или возобновил бы выполнение после закрытия диалога об ошибке.
Такое вообще возможно? Фар 2.
2) Как плагину приостановить проигрываемый макрос? Например, та же ситуация что и в 1), но продолжать или нет - зависит от юзера. Плуг бы приостановил макрос, задал вопрос и прервал бы его (как в 1) или возобновил бы выполнение после закрытия диалога об ошибке.
Такое вообще возможно? Фар 2.
Last edited by NightRoman on Mon 26 Oct, 2009 15:16, edited 1 time in total.
Re: Пара вопросов по режиму проигрывания макроса.
может и можно, про это никто не задумывалсяNightRoman wrote:Такое вообще возможно? Фар 2.
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
- NightRoman
- Posts: 6197
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 34 times
- Been thanked: 62 times
- Contact:
Re: Пара вопросов по режиму проигрывания макроса.
Ну тогда это философский вопрос на будущее. Как правильно и безопасно плагин должен сообщать об ошибке диалогом, с учетом того, что щас может играть макрос (а такая ситуация совсем не редкость). Если неожиданный для пользователя диалог об ошибке (о возможности которого знает может только плагин до поры до времени) выскочит в середине макроса, то последствия вообще не очень предсказуемы.
- NightRoman
- Posts: 6197
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 34 times
- Been thanked: 62 times
- Contact:
Re: Пара вопросов по режиму проигрывания макроса.
Уже неплохо.. просвети, пожалуйста, что конкретно это значит.DrKnS wrote:Послать в консоль CtrlBreak.
- NightRoman
- Posts: 6197
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 34 times
- Been thanked: 62 times
- Contact:
Re: Пара вопросов по режиму проигрывания макроса.
В принципе, прервать \ продолжить можно подхитрить гуйным модальным диалогом (но не пробовал еще). Но само-собой, гуй - это на самый уж крайний случай.
- DrKnS
- Posts: 6114
- Joined: Thu 04 Aug, 2005 06:44
- Location: Kyiv
- Has thanked: 12 times
- Been thanked: 426 times
Re: Пара вопросов по режиму проигрывания макроса.
NightRoman wrote:просвети, пожалуйста, что конкретно это значит.
changelog wrote:svs 05.08.2008 14:38:06 +0300 - build 542
1. Mantis#0000581: Добавить возможность прервать выполнение макроса
CtrlBreak прерывает выполнение макроса. Назначать макросы на CtrlBreak тоже можно
- NightRoman
- Posts: 6197
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 34 times
- Been thanked: 62 times
- Contact:
Re: Пара аварийных вопросов по режиму проигрывания макроса.
DrKnS
Это когда юзер нажмет. А программно? Есть такой АПИ у консоли? Хорошо, поковыряю.
Это когда юзер нажмет. А программно? Есть такой АПИ у консоли? Хорошо, поковыряю.
- NightRoman
- Posts: 6197
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 34 times
- Been thanked: 62 times
- Contact:
Re: Пара аварийных вопросов по режиму проигрывания макроса.
Все получилось и работает, как надо и безопасно: и 1), и 2). Схема такая, может, кому пригодится:
-- вызываем обычный диалог об ошибке, это безопасно, макрос уже не работает
-- юзер сказал "стоп", тогда эмулируем CtrlBreak, тем самым прерываем текущий макрос
-- юзер сказал "фиг с ним", ничего не делаем специального, макрос сам продолжится
Оба решения какие-то хакерские, особенно второе. Но иногда лучше перебдеть. Если в Фаре будут АПИ альтернативы, с удовольствием выкину эти обходные пути. Но пока буду применять в определенных местах..
-- эмулируем CtrlBreak, тем самым прерываем текущий макрос1) Как плагину прервать проигрываемый макрос? Например, код плуга видит фатальную ситуацию и знает, что сейчас макрос играет и что-нибудь может не так сделать.
-- вызываем обычный диалог об ошибке, это безопасно, макрос уже не работает
-- запускаем гуйный мессадж бокс с вопросом (это работает как приостановка макроса, ибо Фар про гуйный диалог не знает)2) Как плагину приостановить проигрываемый макрос? Например, та же ситуация что и в 1), но продолжать или нет - зависит от юзера. Плуг бы приостановил макрос, задал вопрос и прервал бы его (как в 1) или возобновил бы выполнение после закрытия диалога об ошибке.
-- юзер сказал "стоп", тогда эмулируем CtrlBreak, тем самым прерываем текущий макрос
-- юзер сказал "фиг с ним", ничего не делаем специального, макрос сам продолжится
Оба решения какие-то хакерские, особенно второе. Но иногда лучше перебдеть. Если в Фаре будут АПИ альтернативы, с удовольствием выкину эти обходные пути. Но пока буду применять в определенных местах..