Как погасить панели из плагина?

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

Как погасить панели из плагина?

Post by NightRoman »

Как погасить/показать панели Фара из плагина? Есть ли такой АПИ? Мне не попадается...

Есть команда "Показать юзер экран". Но она имеет временный эффект и в дальнейших операциях панели то и дело мелькают. А хочется именно иметь их погашенными навовсе (пока плагин сам не скажет показать) и работать с консолью без панелей.

Юз-кейс. Новый режим "Command console" в PowerShellFar. Надо погасить панели и в цикле запускать диалог замаскированный под командную строку. Получилось неплохо и работоспособно. С гашением панелей в простых ситуациях пока выкручиваюсь асинхронным посылом клавиш CtrlF1, CtrlF2 через вызов макроса с откладыванием перевызова плагина (известный трюк). Но:

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

Если такого АПИ для гашения/показа панелей нет, то возможно ли это будет реализовать, если предложить? А может есть существующие обходные пути получше посыла CtrlF1, CtrlF2?
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

Re: Как погасить панели из плагина?

Post by HaRT »

NightRoman wrote:А может есть существующие обходные пути получше посыла CtrlF1, CtrlF2?
[b]CtrlO[/b] — вдвое меньше клавиш. :P
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Как погасить панели из плагина?

Post by NightRoman »

За неимением лучшего попробую и это, вдруг сработает в моем случае (чем черт не шутит). Но в принципе, что если надо погасить или показать одну конкретную панель?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Как погасить панели из плагина?

Post by NightRoman »

Попробовал CtrlO. То же самое, похоже. В некоторых случаях не срабатывает, как хотелось бы.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Как погасить панели из плагина?

Post by John Doe »

Что значит в некоторых случаях?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Как погасить панели из плагина?

Post by NightRoman »

John Doe wrote:Что значит в некоторых случаях?
Например, если пытаться запустить мой юз-кейс из немодального редактора путем переключения в панели, гашения их и запуска диалога фиктивной комстроки.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Как погасить панели из плагина?

Post by John Doe »

Вы не указываете что именно здесь может сработать не так как хотелось бы
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Как погасить панели из плагина?

Post by NightRoman »

Панели оказываются не погашенными, когда запускается диалог комстроки. Клавиши, предназначенные для гашения панелей, попадают в диалог, а не в панели.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Как погасить панели из плагина?

Post by NightRoman »

Поигравшись с разными цепочками макросов, добился вроде желаемого поведения, как-то так (C#)

Некрасивый хакерский код. И не дает особой уверенности, что будет гладко работать и дальше. Хорошо бы все-таки АПИ для гашения/показа панелей иметь в дополнение к имеющейся проверке показанности (хорошо, что этот АПИ есть).
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Re: Как погасить панели из плагина?

Post by Alexey Samlyukov »

в плаге ПиквьюАдв что-то подобное делалось через трансляцию маросов.
в апи помимо гашения панелей не хватает возможности узнать что конкрено под диалогом (я как-то предлагал через ACTL_GETWINDOWTYPE)

опередил... :)
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Как погасить панели из плагина?

Post by NightRoman »

... но не работает гладко при моих авто тестах, где тоже многое основано на макросах и отложенных перевызовах. Пожалуй, от возможности переключения в панели из редактора с гашением их для фиктивной комстроки пока воздержусь, от греха подальше.

Ну не важно, это все про обходные пути речь шла. Вопрос - развивать ли их дальше или лучше подождать легальных способов управления видимостью панелей через АПИ?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Как погасить панели из плагина?

Post by John Doe »

"Keys'F12 0 CtrlO'"
А почему тут переключаетесь в панели макросом, а не используете API?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Как погасить панели из плагина?

Post by NightRoman »

Пробовал. В сочетании с гашением панелей не сработало, панели не гасли. Если же макросом и переключиться, и погасить, то работает.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: Как погасить панели из плагина?

Post by NightRoman »

Переключение в панели, если не ошибаюсь, через АПИ работает, но реально отработает только когда Фар получит управление. То есть надо тоже делать асинхронно и потом посылать еще макрос гашения, а потом перевызывать плагин.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Re: Как погасить панели из плагина?

Post by John Doe »

NightRoman wrote:Переключение в панели, если не ошибаюсь, через АПИ работает, но реально отработает только когда Фар получит управление.
Вроде бы ACTL_COMMIT помогает
Post Reply

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